Trouver des documents avec les tableaux ne contenant pas d'un document avec une valeur de champ dans MongoDB

J'essaie de trouver tous les documents qui ne contiennent pas au moins un document avec une valeur de champ spécifique. Par exemple voici un exemple de collection:

{  _id : 1,
  docs : [
        { foo : 1,
          bar : 2},
        { foo : 3,
          bar : 3}
         ]
},
{  _id : 2,
  docs : [
        { foo : 2,
          bar : 2},
        { foo : 3,
          bar : 3}
         ]
}

Je veux trouver tous les enregistrements où il n'est pas un document dans les docs bloc qui ne contient pas au moins un enregistrement avec foo = 1. Dans l'exemple ci-dessus, seul le deuxième document doit être retourné.

J'ai essayé le suivant, mais il ne me dit si il y a toutes celles qui ne correspondent pas (qui renvoie le document 1.

db.collection.find({"docs": { $not: {$elemMatch: {foo: 1 } } } })

Mise à JOUR: La requête ci-dessus est qu'ils fonctionnent réellement. Autant de fois arrive, mes données était mauvais, pas de mon code.

J'ai aussi regardé le $nin opérateur mais les exemples montrent seulement lorsque le tableau contient une liste de valeurs primitives, pas un document supplémentaire. Quand j'ai essayé de le faire avec quelque chose comme ce qui suit, il recherche le EXACTE du document plutôt que de simplement les foo domaine que je veux.

db.collection.find({"docs": { $nin: {'foo':1 } } })

Est-il de toute façon d'accomplir ceci avec les opérateurs de base?

InformationsquelleAutor Scott | 2013-04-25