J'ai une collection MongoDB orders
, les documents dont se présenter comme suit:Comparer des propriétés de tableau à propriété unique dans le document
[{
"_id" : ObjectId("59537df80ab10c0001ba8767"),
"shipments" : {
"products" : [
{
"orderDetails" : {
"id" : ObjectId("59537df80ab10c0001ba8767")
}
},
{
"orderDetails" : {
"id" : ObjectId("59537df80ab10c0001ba8767")
}
}
]
},
}
{
"_id" : ObjectId("5953831367ae0c0001bc87e1"),
"shipments" : {
"products" : [
{
"orderDetails" : {
"id" : ObjectId("5953831367ae0c0001bc87e1")
}
}
]
},
}]
maintenant, de cette collection, je veux filtrer les éléments qui, l'une des valeurs à shipments.products.orderDetails.id
chemin est la même que la valeur à _id
chemin.
J'ai essayé:
db.orders.aggregate([{
"$addFields": {
"same": {
"$eq": ["$shipments.products.orderDetails.id", "$_id"]
}
}
}])
pour ajouter un champ same
comme un indicateur pour déterminer si les valeurs sont égales, mais la valeur de same
vient comme false
pour tous les documents.
EDIT Ce que je veux faire est de comparer le champ _id
les documents avec toutes shipments.products.orderDetails.id
valeurs dans le tableau. Si même un des shipments.products.orderDetails.id
correspond à la valeur du champ _id
, je souhaite que ce document figure dans le résultat final. J'utilise MongoDB 3.4 et je dois utiliser le pipeline d'agrégation.
Quelle est votre intention réelle? La propriété que vous comparez est dans un "tableau" donc qu'est-ce qui est supposé être retourné si l'un des membres du tableau est différent? Pourquoi voulez-vous que cette valeur logique soit renvoyée? Parce que si votre intention est de "sélectionner" ou dicarder les conditions "vrai/faux", alors il y a un meilleur moyen. Cela n'aide pas vraiment que les seules données de la question correspondent toujours entre les deux valeurs. –
Je veux tous les éléments dans lesquels le champ '_id' existe en dehors des éléments du tableau –
Vous venez de recevoir quelques questions détaillées. Commenter avec une ligne qui n'explique pas mieux que votre question n'aide pas. Le long commentaire est parce que votre question n'est pas claire. Rendez-le plus clair. –