2013-06-05 1 views

Répondre

0

Fondamentalement, il existe certaines façons de faire correspondre la matrice. Il n'y a pas de solution exacte à vos besoins.

Considérant que vous avez des documents tels que:

{ "_id" : ObjectId("51b05a712961f4704684d901"), "x" : [ 6, 7, 8, 9 ] } 
{ "_id" : ObjectId("51b05a712961f4704684d902"), "x" : [ 7, 8, 9, 10 ] } 
{ "_id" : ObjectId("51b05a712961f4704684d903"), "x" : [ 8, 9, 10, 11 ] } 

Vous pouvez utiliser query1 comme:

db.collection.find({x:[3,4,5,6]}) 

Le résultat est correspondance exacte que pour les tableaux comme x

result1:

{ "_id" : ObjectId("51b05a712961f4704684d8fe"), "x" : [ 3, 4, 5, 6 ] } 

query1 ne correspond pas à:

{ "_id" : ObjectId("51b05a712961f4704684d8fe"), "x" : [ 3, 4, 5] } 
{ "_id" : ObjectId("51b05a712961f4704684d8fe"), "x" : [ 3, 4, 5, 6, 7] } 

Vous pouvez utiliser: QUERY2 comme:

db.t.find({x:{$all:[3,4]}}) 

result2 peut être:

{ "_id" : ObjectId("51b05a722961f4704684daf1"), "x" : [ 3, 4, 5, 6 ] } 
{ "_id" : ObjectId("51b05c332961f4704684dce4"), "x" : [ 3, 4, 5 ] } 
{ "_id" : ObjectId("51b05c772961f4704684dce5"), "x" : [ 3, 4, 5, 6, 7 ] } 

Vous pouvez utiliser: requete3 comme:

Résultat3 ressemblerait à:

{ "_id" : ObjectId("51b05a722961f4704684daf1"), "x" : [ 3, 4, 5, 6 ] } 
{ "_id" : ObjectId("51b05a722961f4704684daf2"), "x" : [ 4, 5, 6, 7 ] } 

Voir cette question aussi: mongodb array matching

Donc il y a un billet ouvert/sans solution pour un opérateur de sous-ensemble de $, ce qui fait ce que vous probablement.

Questions connexes