Убедитесь, что поле существует с MongoDB

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

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

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

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

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

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

Ответ 1

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

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

Ответ 2

Предположим, что у нас есть набор, подобный ниже:

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

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

Ans:

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

Ответ 3

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

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

Ответ 4

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

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

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

Session.SetSafe

db.SetSafe(&mgo.Safe{})

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