Проверьте, что поле существует с MongoDB

поэтому я пытаюсь найти все записи, которые имеют набор полей, а не null.

Я пытаюсь использовать , согласно документация MongoDB, этот запрос вернет поля, равные null.

$exists соответствует документам, содержащим поле, в котором хранится значение null.

поэтому я теперь предполагаю, что мне придется сделать что-то вроде этого:

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

всякий раз, когда я пытаюсь это сделать, я получаю ошибка [invalid use of $not] У кого-нибудь есть идея, как запросить это?

4 ответов


использовать $ne (для "не равно")

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

предположим, что у нас есть коллекция, как показано ниже:

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

мы хотим знать, присутствует ли поле бутылки?

Ans:

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

Я нахожу, что это работает для меня

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

можно использовать .Count()

count, err = collection.Find(bson.M{field: value}).Count()

но не забудьте установить:

сессии.SetSafe

db.SetSafe(&mgo.Safe{})

в противном случае он возвращает 0 при каждом вызове.