2 votes

Comment rechercher une collection pour trouver une valeur imbriquée dans l'un de ses documents dans MongoDB ?

Screenshot of database in Robomongo

Dans la capture d'écran ci-dessus, vous pouvez voir que j'ai ouvert un document nommé (1) ObjectId(572b...ec7a) de mon tests dans ma base de données Mongo. (le tests est remplie de documents comme celui-ci) Vers le bas de la capture d'écran, vous pouvez voir qu'il y a un champ nommé Nom qui est de type chaîne de caractères avec une valeur de EditMessagesSettings . Je voudrais interroger le tests et renvoie tout document qui contient un Nom (par exemple EditMessagesSettings dans ce cas). Comment puis-je faire ?

Voici quelques-unes des requêtes que j'ai tentées sans succès, en obtenant un message de retour du genre Récupération de 0 enregistrement(s) en 4ms .

  • db.getCollection('tests').find({Name : "EditMessagesSettings"})
  • db.getCollection('tests').find({Name:{$regex : "Settings"}})

Edit : si c'est n'importe quelle constellation, si je tape dans db.getCollection('tests').find({Obj}) j'obtiens une option d'auto-complétion de ObjectId( .

3voto

ittv Points 48

Je vois où est le problème. Vous devez utiliser deux underscores au lieu d'un. Voir l'exemple ci-dessous :

_valeur contre la valeur correcte __valeur.

Votre requête devrait donc ressembler à ça :

db.getCollection('tests').find({"Data.__value.Name":"EditMessagesSettings"})

0voto

Luke Villanueva Points 965

Essayez

db.getCollection('tests').find({"Data._value.Name":"EditMessagesSettings"})

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