Mongodb Trova o aggregato Abbagato Abbina un oggetto all'interno di una matrice di un documento

StackOverflow https://stackoverflow.com//questions/25045481

  •  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"
    }
]
}
.

È stato utile?

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"
        }
    ]
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top