Así que estoy tratando de encontrar todos los registros que tienen un campo de juego y no es nula.

Yo trate de usar $exists, sin embargo de acuerdo a la MongoDB documentación, esta consulta devolverá los campos que igual null.

$exists coincide con los documentos que contienen el campo que almacena el valor null.

Así que ahora estoy suponiendo que voy a tener que hacer algo como esto:

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

Cada vez que intento esto, sin embargo, me sale el error [invalid use of $not] Alguien tiene una idea de cómo consultar para esto?

InformationsquelleAutor AlbertEngelB | 2013-11-08

4 Comentarios

  1. 159

    Uso $ne (para «no es igual»)

    db.collection.find({ "fieldToCheck": { $exists: true, $ne: null } })
    • ¿Qué significa este cambio? Un null colección? Un solo elemento? Una matriz?
    • lo find siempre devuelve: una colección de registros que coincidan con los criterios.
    • AFAIK devuelve un cursor
    • sí, pero si usted tiene menos de una página de los documentos, incluso no ver la diferencia. Y si se ejecuta esta consulta desde el controlador externo, estoy bastante seguro de que la mayoría de ellos te protegen contra el cursor detalle de implementación.
  2. 21

    Supongamos que tenemos una colección como la siguiente:

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

    Queremos saber si la botella está presente no?

    Ans:

    db.products.find({"things.bottle":{"$exists":true}})
    • When <boolean> is true, $exists matches the documents that contain the field, including documents where the field value is null. De la documentación.
    • sí, pero yo no veo por qué una base de datos contendría el valor nulo, es descuidado
  3. 2

    me parece que esto funciona para mí

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

    Puede utilizar .Count()

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

    pero recuerde establecer:

    Período de sesiones.SetSafe

    db.SetSafe(&mgo.Safe{})

    De lo contrario devolverá un 0 en cada llamada.

    • La pregunta no mencionar, aunque. Y esta respuesta parece completamente perder el punto de la cuestión.

Dejar respuesta

Please enter your comment!
Please enter your name here