Mongodb Trova o aggregato Abbagato Abbina un oggetto all'interno di una matrice di un documento
-
21-12-2019 - |
Domanda
Sto cercando di capire come posso cercare tutti i documenti che hanno la stessa combinazione di "tag" come il seguente documento.
Significa che vorrei trovare tutti i documenti che hanno tag {marchio: "Bosh", Tipo: "Frigorifero"} && {Tipo: "Congelatore", Colore: "Bianco"} Orqualsiasi altra combinazione dei tag.È possibile in Mongo?Come posso farlo o c'è una buona spiegazione da qualche parte che spiega questo?
{
"_id" : ObjectId("53bd7837156aa38914f55176"),
"user_id" : "53bd1a0d237e7d44120a51d1",
"tags" : [
{
"brand" : "bosch",
"type" : "fridge",
"color" : "black"
},
{
"brand" : "electrolux",
"type" : "freezer",
"color" : "white"
}
]
}
. Soluzione
È necessario utilizzare $ ELEMMATCH operatore per abbinare il subDocumente $ Tutti operatore per combinare più $ Elemmatch operator: Questa query troverà tutti i documenti con subdocumenti che hanno specificato valori in entrambi i campi (I.E. Brand && Tipo e tipo && colore).
Il documento seguente non sarà abbinato dalla query sopra (avviso che il valore dei campi del tipo è invertito):
{
...
"tags" : [
{
"brand" : "bosch",
"type" : "freezer"
},
{
"brand" : "electrolux",
"type" : "fridge"
}
]
}
.