sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb-fråga utan fältnamn

Tyvärr stöder MongoDB inte någon metod för att fråga alla fält med ett visst värde. Det finns en befintlig Jira-biljett som begär denna förbättring:https://jira.mongodb.org/browse/SERVER-1248 . Kommentera, rösta eller följ den biljetten.

Under tiden är det vanliga sättet att hantera detta att ändra MongoDB-schemat. För ditt exempel skulle du ändra ditt befintliga schema:

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

Och du kan strukturera det ungefär så här:

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

När du har gjort detta kan du utföra följande fråga för att hitta alla önskade dokument:

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

Observera att det här schemat låter dig indexera fälten 'tags.cid' och 'tags.value', vilket ditt ursprungliga schema inte gör.

Jag hoppas att detta hjälper.

-William



  1. heroku mongohq och mongoid Mongo::ConnectionFailure

  2. Hur kan jag vara värd för min egen Parse Server på Heroku med MongoDB?

  3. lägg till fälten create_at och updated_at till mongoose-scheman

  4. Mongodb $push i kapslad array