Docs Menu
Docs Home
/ /
Consulta de comparación

$ne

$ne

$ne selecciona los documentos donde el valor del campo especificado no es igual al valor indicado. Esto incluye documentos que no contienen el campo especificado.

Para comparar diferentes valores de tipo BSON, consulte la orden de comparación BSON especificado.

Puedes usar $ne para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El operador $ne tiene el siguiente formato:

{ field: { $ne: value } }

Nota

Si el valor del operador $ne es nulo, consulta Filtro de no igualdad para obtener más información.

Los siguientes ejemplos utilizan la colección inventory. Para crear la colección, se debe ajustar el siguiente comando insertMany() en mongosh:

db.inventory.insertMany( [
{
"item": "nuts", "quantity": 30,
"carrier": { "name": "Shipit", "fee": 3 }
},
{
"item": "bolts", "quantity": 50,
"carrier": { "name": "Shipit", "fee": 4 }
},
{
"item": "washers", "quantity": 10,
"carrier": { "name": "Shipit", "fee": 1 }
}
] )

Selecciona todos los documentos en la colección inventory en los que quantity no sea igual a 20. Esta query también selecciona documentos que no tienen el campo quantity:

db.inventory.find( { quantity: { $ne: 20 } } )
{
_id: ObjectId("61ba667dfe687fce2f042420"),
item: 'nuts',
quantity: 30,
carrier: { name: 'Shipit', fee: 3 }
},
{
_id: ObjectId("61ba667dfe687fce2f042421"),
item: 'bolts',
quantity: 50,
carrier: { name: 'Shipit', fee: 4 }
},
{
_id: ObjectId("61ba667dfe687fce2f042422"),
item: 'washers',
quantity: 10,
carrier: { name: 'Shipit', fee: 1 }
}

El equivalente en SQL para esta query es:

SELECT * FROM INVENTORY WHERE QUANTITIY != 20

El siguiente ejemplo establece el campo price basándose en una comparación de $ne contra un campo en un documento incrustado. La operación updateMany() realiza una búsqueda de un documento incrustado, carrier, con un subcampo llamado fee. Utiliza $set para actualizar el campo price a 9.99 en cada documento donde fee tiene un valor que no es igual a 1 o donde el subcampo fee no existe:

db.inventory.updateMany(
{ "carrier.fee" : { $ne: 1 } },
{ $set: { "price": 9.99 } }
)
{
_id: ObjectId("61ba66e2fe687fce2f042423"),
item: 'nuts',
quantity: 30,
carrier: { name: 'Shipit', fee: 3 },
price: 9.99
},
{
_id: ObjectId("61ba66e2fe687fce2f042424"),
item: 'bolts',
quantity: 50,
carrier: { name: 'Shipit', fee: 4 },
price: 9.99
},
{
_id: ObjectId("61ba66e2fe687fce2f042425"),
item: 'washers',
quantity: 10,
carrier: { name: 'Shipit', fee: 1 }
}

El equivalente en SQL para esta query es:

UPDATE INVENTORY SET PRICE = '9.99' WHERE carrierfee != 1

El operador de $ne desigualdad no es muy selectivo, ya que suele coincidir con una gran parte del índice. Por lo tanto, en muchos casos, una $ne consulta con un índice puede no tener un mejor rendimiento que una $ne consulta que debe analizar todos los documentos de una colección. Véase también Selectividad de consultas.

Volver

$lte

En esta página