MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

query mongodb senza nome campo

Sfortunatamente, MongoDB non supporta alcun metodo per interrogare tutti i campi con un valore particolare. Esiste un ticket Jira esistente che richiede questo miglioramento:https://jira.mongodb.org/browse/SERVER-1248 . Sentiti libero di commentare, votare o seguire quel ticket.

Nel frattempo, il solito modo in cui viene gestito è modificare lo schema MongoDB. Per il tuo esempio, cambieresti lo schema esistente:

{"123": "apple", "217": "pear", "179": "orange"} 
{"831": "pear", "189": "grapes"} 

E potresti strutturarlo in questo modo:

 { tags: [
        { cid: "123", value: "apple" },
        { cid: "217", value: "pear" },
        { cid: "179", value: "orange" },
      ]
    }
   { tags: [
        { cid: "831", value: "pear" },
        { cid: "189", value: "grapes" },
      ]
    }

Una volta fatto ciò, puoi eseguire la seguente query per trovare tutti i documenti desiderati:

 db.docs.find( {'tags.value': "apple" } )

Tieni presente che questo schema ti consente di indicizzare i campi 'tags.cid' e 'tags.value', cosa che lo schema originale non ha.

Spero che questo aiuti.

-William