J'ai des documents dans couchdb. Le schéma ressemble ci-dessous:Déduplication/correspondance dans Couchdb?
userId
email
personal_blog_url
telephone
Je suppose que deux utilisateurs sont en fait la même personne aussi longtemps qu'ils ont
- email ou
- personal_blog_url ou
- téléphone
être identique.
J'ai 3 vues créé, qui associe essentiellement un email/BLOG_URL/téléphone UserIds et combine ensuite les UserIds dans le groupe sous la même clé, par exemple,
_view/by_email:
----------------------------------
key values
[email protected] [123, 345]
[email protected] [23, 45, 333]
_view/by_blog_url:
----------------------------------
key values
http://myblog.com [23, 45]
http://mysite.com/ss [2, 123, 345]
_view/by_telephone:
----------------------------------
key values
232-932-9088 [2, 123]
000-111-9999 [45, 1234]
999-999-0000 [1]
Mes questions:
- Comment puis-je fusionner les résultats des 3 vues différentes dans une table/vue utilisateur finale qui ne contient aucun doublon?
- Ou est-ce une bonne pratique de faire une telle déduplication dans couchdb?
- Ou ce qui serait un bon moyen de faire une déduplication dans un canapé alors?
ps. dans la vue de face, supposons que pour tous les dupes, nous gardons seulement le plus petit userId.
Merci.
Merci Marcin. Je pense que votre idée fonctionne. Je n'ai pas eu de succès jusqu'à la dernière étape - la recherche en utilisant plusieurs clés. si je mets 'keys = [[1," [email protected] "], [2," http://a.com "], [3," 334-333-2323 "]]', je reçois toujours tous les documents correspondent en tant que résultat. peut-être que je devrais poser une nouvelle question sur stackoverflow pour cela? – greeness
Je ne suis pas sûr de ce que vous voulez dire par "tous les documents". Sans utiliser reduce (juste map) vous devriez obtenir l'enregistrement JSON de réponse avec '" rows ": [{" id ":" 1 "," key ": [1," some @ email "]," value ":" 1 "}, {" id ":" 2 "," clé ": [1," certains @ email "]," valeur ":" 2 "}, ...}]' pour tous les documents contenant email, URL du blog ou numéro de téléphone comme dans votre nouvel album. Avez-vous obtenu un document qui n'a pas de correspondance de champ? Notez que pour les cartes (sans réduction), les documents ne seront pas triés par identifiant. –
Je suppose '? Keys = [[1," [email protected] "], [2," http://a.com "], [3," 334-333-2323 "]]' est un multiple clé-requête. Le résultat obtenu contient des documents qui n'ont aucun de ces champs correspondants. Si je ne fais qu'une seule requête, le résultat est correct. Y a-t-il un problème avec la requête multi-clé? BTW, j'utilise couchDB 1.0.1. – greeness