web-dev-qa-db-fra.com

Vérifier que le champ existe avec MongoDB

J'essaie donc de trouver tous les enregistrements qui ont un champ défini et qui ne sont pas nuls.

J'essaie d'utiliser $exists; cependant, selon la documentation MongoDB, cette requête retournera des champs égaux à null.

$exists correspond aux documents contenant le champ qui stocke la valeur null.

Donc, je suppose maintenant que je vais devoir faire quelque chose comme ceci:

db.collection.find({ "fieldToCheck" : { $exists : true, $not : null } })

Cependant, chaque fois que j'essaie, j'obtiens le message d'erreur [invalid use of $not].

93
AlbertEngelB

Utilisez $ne (pour "pas égal")

db.collection.find({ "fieldToCheck": { $exists: true, $ne: null } })
131
Sergio Tulentsev

Supposons que nous ayons une collection comme ci-dessous:

{ 
  "_id":"1234"
  "open":"Yes"
  "things":{
             "paper":1234
             "bottle":"Available"
             "bottle_count":40
            } 
}

Nous voulons savoir si le champ de la bouteille est présent ou non?

Ans:

db.products.find({"things.bottle":{"$exists":true}})
18
Pavan Choudhary

je trouve que cela fonctionne pour moi

db.getCollection('collectionName').findOne({"fieldName" : {$ne: null}})
2
Yakir Manor