Как в MongoDB найти встроенный документ?

Я создал встроенный документ с именем «KPOP» в MongoDB и хотел найти поле со значением «BTS: Fake Love».

Вот встроенный документ:

> use TestMongoDB
  switched to db TestMongoDB
> db.KPOP.find().pretty()
{
    "_id" : ObjectId("5fd83447066c904c1365771a"),
    "KPOP" : {
            "SHINee" : "Dream Girl",
            "Girl's Generation" : "I Got a Boy",
            "BTS" : "Fake Love"
    }
} 

Что-то не так с моим кодом? После того, как я нажимаю ввод, ничего не появляется.

> db.KPOP.find( {"KPOP": {"BTS": "Fake Love"}} )
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
91
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

попробуйте с:

db.KPOP.find( {"KPOP.BTS": "Fake Love"} )
Ответ принят как подходящий

Что-то не так с моим кодом? После нажатия энтер ничего не показывает вверх.

db.KPOP.find( {"KPOP": {"BTS": "Поддельная любовь"}})

Это ожидаемое поведение.

Если вы хотите запросить отдельные поля встроенного документа, вам необходимо использовать следующий синтаксис — с использованием записи через точку (.). Например, оба этих запроса возвращают документ:

db.test.find({"KPOP.SHINee": "Dream Girl"})
db.test.find({"KPOP.SHINee": "Dream Girl", "KPOP.BTS": "Fake Love" })

В приведенных выше запросах можно указать одно, два или все поля и в любом порядке.

При указании фильтра для всего встроенного документа используется следующий синтаксис:

db.test.find({ KPOP: { SHINee: "Dream Girl", "Girl's Generation": "I Got a Boy", BTS: "Fake Love" } })

В этом случае обратите внимание, что порядок полей встроенного документа должен быть таким же, как и в исходном документе; то есть SHINee, "Girl's Generation" и BTS (внутри KPOP). И вам нужно указать все поля встроенного документа.

Другие вопросы по теме