MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

requête mongodb sans nom de champ

Malheureusement, MongoDB ne prend en charge aucune méthode d'interrogation de tous les champs avec une valeur particulière. Il existe un ticket Jira demandant cette amélioration :https://jira.mongodb.org/browse/SERVER-1248 . N'hésitez pas à commenter, voter ou suivre ce ticket.

En attendant, la manière habituelle de gérer cela consiste à modifier le schéma MongoDB. Pour votre exemple, vous modifieriez votre schéma existant :

{"123": "apple", "217": "pear", "179": "orange"} 
{"831": "pear", "189": "grapes"} 

Et vous pourriez le structurer comme ceci :

 { tags: [
        { cid: "123", value: "apple" },
        { cid: "217", value: "pear" },
        { cid: "179", value: "orange" },
      ]
    }
   { tags: [
        { cid: "831", value: "pear" },
        { cid: "189", value: "grapes" },
      ]
    }

Une fois que vous avez fait cela, vous pouvez effectuer la requête suivante pour trouver tous les documents souhaités :

 db.docs.find( {'tags.value': "apple" } )

Notez que ce schéma vous permet d'indexer les champs 'tags.cid' et 'tags.value', ce que votre schéma d'origine ne permet pas.

J'espère que cela vous aidera.

-Guillaume