university tutorial example descargar caracteristicas mongodb

tutorial - mongodb university



MongoDB no es igual a (6)

Intento mostrar una consulta en MongoDB donde un campo de texto no está '''' (en blanco)

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

Sin embargo, obtengo el error de invalid use of $not

Revisé la documentación, pero los ejemplos que usan son para casos complicados (con expresiones regulares y $not negar a otro operador).

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


De los documentos de Mongo :

El operador $not solo afecta a otros operadores y no puede verificar los campos y documentos de forma independiente. Por lo tanto, utilice el operador $not para las disyunciones lógicas y el operador $ne para probar los contenidos de los campos directamente.

Como está probando el campo directamente $ne es el operador correcto para usar aquí.

Editar:

Una situación en la que le gustaría usar $not es:

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

Eso seleccionaría todos los documentos donde:

  • El valor del campo de precio es menor o igual a 1.99 o el precio
  • El campo no existe

Ejemplo de vida real; encontrar todos los usuarios, pero no el actual:

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


Si hay un null en una matriz y desea evitarlo:

db.test.find({"contain" : {$ne :[] }}).pretty()


Si quieres hacer varios $ne entonces hazlo

db.users.find({name : {$nin : ["mary", "dick", "jane"]}})


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

Un ejemplo para $ ne, que no significa 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 $ no, que toma predicado ($ ne) y lo niega ($ no):

db.test.find({''post'': {$not: {$ne : ""}}}) { "_id" : ObjectId("4f68b19c768972d396fe2267"), "author" : "me", "post" : "" }