Я создал встроенный документ с именем «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"}} )
попробуйте с:
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
). И вам нужно указать все поля встроенного документа.