54 votes

Comment interroger des objets référencés dans MongoDB ?

J'ai deux collections dans ma base de données Mongo, et les Foo contiennent des références à un ou plusieurs Bar :

 Foo: { 
  prop1: true,
  prop2: true,
  bars: [
     {
     "$ref": "Bar",
     "$id": ObjectId("blahblahblah")
     }
  ]
}

Bar: {
   testprop: true
}

Ce que je veux, c'est trouver tous les Foo qui ont au moins un Bar dont le testprop est défini sur true. J'ai essayé cette commande, mais elle ne renvoie aucun résultat :

 db.Foo.find({ "bars.testprop" : { "$in": [ true ] } })

Des idées?

21voto

Chris Shain Points 33569

Vous ne pouvez pas. Voir http://www.mongodb.org/display/DOCS/Database+References

Vous devez le faire dans le client.

1voto

Nicekiwi Points 1867

Eh bien.. vous pouvez interroger le Bar pour le _id de tous les documents avec testprop: true , puis rechercher $in et remplir bars sur le Foo avec un tableau de ces _id vous avez obtenu à partir de la première requête.. :P

Peut-être que cela compte comme "Dans le client" :P juste une pensée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X