Estoy tratando de mostrar una consulta en MongoDB donde un campo de texto no es » (en blanco)

{ 'name' : { $not : '' }}

Sin embargo me sale el error invalid use of $not

He mirado sobre la documentación, pero los ejemplos que uso son para casos complicados (con regexp y $not de la negación de otro operador).

¿Cómo lo haría el simple cosa que estoy tratando de hacer?

InformationsquelleAutor Akshat | 2012-03-20

6 Comentarios

  1. 127

    Uso $ne$not debe ser seguido por el operador estándar:

    Un ejemplo para $ne, que significa no igual:

    use test
    switched to db test
    db.test.insert({author : 'me', post: ""})
    db.test.insert({author : 'you', post: "how to query"})
    db.test.find({'post': {$ne : ""}})
    { "_id" : ObjectId("4f68b1a7768972d396fe2268"), "author" : "you", "post" : "how to query" }

    Y ahora $not, que lleva en el predicado ($ne) y lo niega ($not):

    db.test.find({'post': {$not: {$ne : ""}}})
    { "_id" : ObjectId("4f68b19c768972d396fe2267"), "author" : "me", "post" : "" }
    • Para aquellos curiosos $ne se refiere a «no es igual».
    • Esta respuesta tiene un gran número de votos, pero la explicación es muy clara. Lo que está sucediendo en el ejemplo que tanto el $no $ne?
    • mejoró un poco, es que todavía no está claro?
  2. 8

    De la Mongo docs:

    La $not operador sólo afecta a otros operadores y no se puede comprobar
    los campos y los documentos de forma independiente. Así, el uso de la $not operador para
    lógica de las diferencias y la $ne operador para probar el contenido de
    campos directamente.

    Puesto que usted está comprobando el campo directamente $ne es el derecho del operador a utilizar aquí.

    Edición:

    Una situación en la que te gustaría utilizar $not es:

    db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

    Que seleccionar todos los documentos donde:

    • El campo de precio valor es menor o igual a 1.99 o el precio
    • Campo no existe
  3. 0

    Ejemplo de la vida Real; encontrar todos, pero no de usuario actual:

    var players = Players.find({ my_x: player.my_x,  my_y: player.my_y, userId: {$ne: Meteor.userId()} }); 

Dejar respuesta

Please enter your comment!
Please enter your name here