mongodb - drop - ¿Cómo hago una consulta "NO ENCENDIDA" en Mongo?
mongodb example (4)
Este es mi documento:
{
title:"Happy thanksgiving",
body: "come over for dinner",
blocked:[
{user:333, name:''john''},
{user:994, name:''jessica''},
{user:11, name: ''matt''},
]
}
¿Cuál es la consulta para encontrar todos los documentos que no tienen el usuario 11 en "bloqueado"?
Dado que está comparando con un solo valor, su ejemplo en realidad no necesita una operación NOT IN. Esto se debe a que Mongo aplicará sus criterios de búsqueda a cada elemento de un subdocumento de matriz. Puede usar el operador NOT EQUALS, $ ne, para obtener lo que desea, ya que toma el valor que no puede aparecer en la búsqueda:
db.myCollection.find({''blocked.user'': {$ne: 11}});
Sin embargo, si tiene muchas cosas que no puede igualar, es cuando usaría el operador NOT IN, que es $ nin. Toma una matriz de valores que no pueden aparecer en la búsqueda:
db.myCollection.find({''blocked.user'': {$nin: [11, 12, 13]}});
Pruebe lo siguiente:
db.stack.find({"blocked.user":{$nin:[11]}})
Esto funcionó para mí.
Puede usar $ in o $ nin para "not in"
Ejemplo ...
> db.people.find({ crowd : { $nin: ["cool"] }});
Puse un montón más ejemplos aquí: http://learnmongo.com/posts/being-part-of-the-in-crowd/
Ver http://docs.mongodb.org/manual/reference/operator/query/nin/#op._S_nin
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
Esta consulta seleccionará todos los documentos en la colección de inventario donde el valor del campo de cantidad no es igual a 5 ni 15. Los documentos seleccionados incluirán aquellos documentos que no contengan el campo cantidad.
Si el campo contiene una matriz, el operador $ nin selecciona los documentos cuyo campo contiene una matriz sin elemento igual a un valor en la matriz especificada (por ejemplo, etc.).