Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$ne (query operador predicado de query)

$ne

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

Para la comparación de diferentes valores de tipos BSON, consulta el 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 de $ne es nulo, consulte Filtro de no igualdad.

Los siguientes ejemplos usan la colección inventory. Para crear la colección, ejecuta 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 }
}
] )

El siguiente ejemplo selecciona los documentos en la colección inventory donde quantity no es igual a 20 e incluye los documentos que no contienen 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 price campo basándose en una $ne comparación en un campo de un documento incrustado. La operación busca un documento updateMany() incrustado,, carrier con un subcampo fee llamado. Utiliza para actualizar $set el price campo a 9.99 en cada documento donde el valor de fee no sea igual a 1 o donde el fee subcampo no exista:

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 desigualdad $ne no es muy selectivo, ya que a menudo coincide con una gran parte del índice. Como resultado, en muchos casos, es posible que una query $ne con un índice no funcione mejor que una query $ne que deba escanear todos los documentos de una colección. Consulta también Crear queries selectivas.

Al comparar arreglos, $ne encuentra documentos en los que el arreglo de documentos difiere del arreglo especificado en $ne. Específicamente, $ne coincide con cualquier documento en el que los arreglos:

  • Tener diferentes valores de elementos o strings.

  • Tenga los elementos en un orden diferente.

  • Tener un número diferente de elementos.

  • Faltan en un documento.

Por ejemplo, la siguiente query devuelve documentos inventory en los que el arreglo type difiere de [ "hardware", "fasteners" ]:

db.inventory.find( { type: { $ne: [ "hardware", "fasteners" ] } } )

El siguiente ejemplo completo añade un arreglo de type a dos documentos de inventory y ejecuta una query con $ne:

// Update the nuts document to include a type array
db.inventory.updateOne(
{ item: "nuts" },
{ $set: { type: [ "hardware" ] } }
)
// Update the bolts document to include a type array
db.inventory.updateOne(
{ item: "bolts" },
{ $set: { type: [ "hardware", "fasteners" ] } }
)
// Find documents where the type array differs from [ "hardware", "fasteners" ]
db.inventory.find( { type: { $ne: [ "hardware", "fasteners" ] } } )

El resultado muestra el documento nuts porque el arreglo difiere de [ "hardware", "fasteners" ], y el documento washers porque no tiene un arreglo type:

[
{
_id: ObjectId('679d26907c5a58595234305c'),
item: 'nuts',
quantity: 30,
carrier: { name: 'Shipit', fee: 3 },
type: [ 'hardware' ]
},
{
_id: ObjectId('679d26907c5a58595234305e'),
item: 'washers',
quantity: 10,
carrier: { name: 'Shipit', fee: 1 }
}
]

Esta query invierte los elementos del arreglo:

db.inventory.find( { type: { $ne: [ "fasteners", "hardware" ] } } )

Debido a que el arreglo type en el documento bolts es [ "hardware", "fasteners" ], lo cual difiere de [ "fasteners", "hardware" ], la query devuelve el documento bolts además de los documentos nuts y washers:

[
{
_id: ObjectId('679d26907c5a58595234305c'),
item: 'nuts',
quantity: 30,
carrier: { name: 'Shipit', fee: 3 },
type: [ 'hardware' ]
},
{
_id: ObjectId('679d26907c5a58595234305d'),
item: 'bolts',
quantity: 50,
carrier: { name: 'Shipit', fee: 4 },
type: [ 'hardware', 'fasteners' ]
},
{
_id: ObjectId('679d26907c5a58595234305e'),
item: 'washers',
quantity: 10,
carrier: { name: 'Shipit', fee: 1 }
}
]

$ne coincide con los documentos donde el arreglo no contiene el valor especificado y con los documentos que no tienen el arreglo. Por ejemplo:

db.inventory.find( { type: { $ne: "fasteners" } } )

La query devuelve el documento nuts porque el arreglo [ "hardware" ] difiere de "fasteners". La query también devuelve el documento washers porque el documento no contiene un arreglo de type.

Salida de la query:

[
{
_id: ObjectId('679d26907c5a58595234305c'),
item: 'nuts',
quantity: 30,
carrier: { name: 'Shipit', fee: 3 },
type: [ 'hardware' ]
},
{
_id: ObjectId('679d26907c5a58595234305e'),
item: 'washers',
quantity: 10,
carrier: { name: 'Shipit', fee: 1 }
}
]

Volver

$lte

En esta página