Definición
$nor$norrealiza unaNORoperación lógica en una matriz de una o más expresiones de consulta y selecciona los documentos que no superan todas las expresiones de consulta de la matriz. La operación tiene la siguiente$norsintaxis:{ $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }
Ejemplos
$nor Consulta con dos expresiones
Considere la siguiente consulta que utiliza sólo el $nor operador:
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
Esta consulta devolverá todos los documentos que:
contener el
pricecampo cuyo valor no es igual a1.99y contener elsalecampo cuyo valor no es igual atrueocontienen el
pricecampo cuyo valor no es igual a1.99pero no contienen elsalecampo ono contienen el
pricecampo pero contienen elsalecampo cuyo valor no es igual atrueono contienen el
pricecampo y no contienen elsalecampo
$nor y comparaciones adicionales
Considera el siguiente query:
db.inventory.find( { $nor: [ { price: 1.99 }, { qty: { $lt: 20 } }, { sale: true } ] } )
Este query seleccionará todos los documentos de la colección inventory donde:
El
pricevalor del campo no es igual1.99a yEl
qtyvalor del campo no es menor que20yEl
salevalor del campo no es igual atrue
incluidos aquellos documentos que no contienen estos campos.
La excepción al devolver documentos que no contienen el campo en la expresión $nor $nor es cuando se usa el operador con la $exists operador.
$nor y $exists
Compare esto con la siguiente consulta que utiliza el operador $nor $exists con el operador:
db.inventory.find( { $nor: [ { price: 1.99 }, { price: { $exists: false } }, { sale: true }, { sale: { $exists: false } } ] } )
Esta consulta devolverá todos los documentos que:
contener el
pricecampo cuyo valor no es igual a1.99y contener elsalecampo cuyo valor no es igual atrue