objects - mongodb operators
usando $ y con $ match en mongodb (4)
Estoy intentando usar la siguiente consulta en MongoDB pero no se está ejecutando.
db.test.aggergate(
$match: {$and: [type: {$in: ["TOYS"]}, type: {$nin: ["BARBIE"]}, time:
{$lt:ISODate("2013-12-09T00:00:00Z")}]}})
Dice un carácter inválido ":".
¿Es posible usar $ y con $ igualar? He visto un ejemplo en este foro de $ o con $ match, así que supongo que esto es posible.
Gracias de antemano por su ayuda y orientación.
$ y con $ match funciona bien.
Tienes errores de sintaxis en tu consulta. Prueba esto.
db.test.aggregate([
{
$match: {
$and: [
{type: {$in: ["TOYS"]}},
{type: {$nin: ["BARBIE"]}},
{time: {$lt:ISODate("2013-12-09T00:00:00Z")}}
]
}
}
])
Y para lo que está tratando de hacer, no necesita un $and
un $and
.
A continuación se muestra cómo lo estoy haciendo con muchos $ y junto con $ o
User.aggregate([
{
$lookup:{
from:''influencers'',
localField:''_id'',
foreignField:''user'',
as:''influencer''
}
},
{ $match:{ ''$and'':
[ { ''$and'': [ { ''influencer.aboutMe.birthday'': { ''$lte'': 2017-09-11T09:10:07.283Z } } ] },
{ ''$and'': [ { ''influencer.aboutMe.minPrice'': { ''$gte'': 0 } } ] },
{ ''$and'':
[ { ''$or'':
[ { ''$and'': [ { ''influencer.followed_by'': { ''$gte'': 0 } } ] },
{ ''$and'': [ { ''influencer.youTubeSubscribercount'': { ''$gte'':
0 } } ] } ] } ] },
{ ''influencer.isAdminverified'': true },
{ ''influencer.status'': ''Verified'' } ] } }
]);
Si alguien quiere rechazar mi respuesta, está bien, esta es una pregunta típica con falta de investigación.
db.test.find( {$and: [ {"type": {$in: ["TOYS"]}},
{"type": {$nin: ["BARBIE"]}},
{"time": {$lt:ISODate("2013-12-09T00:00:00Z")}}
]
})
AND trabaja con FIND, recibe una serie de coincidencias (pero no es una instrucción de coincidencia). El marco de agregación es para algo completamente diferente, es como dice la palabra, para agregar (contar, sumar, prom y así vale la pena agrupar o desenrollar, etc.)
{
$match: {
$or:[
{''sender'':sender, ''recipient'':recipient},
{''recipient'':sender,''sender'':recipient}
]
}
}
usando $ o