web-dev-qa-db-fra.com

Mongodb Wildcard dans la clé d'une requête

Est-il possible d'être sauvage la clé dans une requête? Par exemple, étant donné l'enregistrement suivant, j'aimerais faire une .find({'a.*': 4}) Cela a été discuté ici https://jira.mongodb.org/browse/server-267 Mais On dirait que ce n'est pas résolu.

{
  'a': {
    'b': [1, 2],
    'c': [3, 4]
  }
}
33
Brad

Comme demandé, cela n'est pas possible. Le problème du serveur que vous avez lié est toujours sous "Problèmes que nous ne sommes pas sûrs de".

MongoDB a une intelligence entourant l'utilisation des tableaux et je pense que cela fait partie de la complexité entourant une telle caractéristique.

Prenez la requête suivante db.foo.find({ 'a.b' : 4 } ). Cette requête correspondra aux documents suivants.

{ a: { b: 4 } }
{ a: [ { b: 4 } ] }

Alors, que fait "Wildcard" ici? db.foo.find( { a.* : 4 } ) correspond-il au premier document? Qu'en est-il de la seconde?

De plus, qu'est-ce que cela signifie sémantiquement? Comme vous l'avez décrit, la requête est efficacement "Recherchez des documents où tout domaine dans ce document a une valeur de 4". C'est un peu inhabituel.

Y a-t-il une sémantique spécifique que vous essayez d'atteindre? Peut-être qu'un changement de la structure du document vous obtiendra la requête souhaitée.

11
Gates VP