Json asal
{
"_id" : ObjectId("58b3a8dc96fbc7cfb8287093"),
"name" : "《地下水质量标准》",
"GBNumber" : "GB/T 14848-93",
"dataEntryClerk" : "handsomeboy",
"lastModified" : "Fri Feb 27 2017 12:03:40 GMT+0800",
"contents" : [
{
"standardID" : "9527-01",
"unit" : "mg/L",
"classifications" : [
{
"level" : "I",
"upperLimit" : "0",
"lowerLimit" : "50"
},
{
"level" : "II",
"upperLimit" : "50",
"lowerLimit" : "150"
},
{
"level" : "III",
"upperLimit" : "150",
"lowerLimit" : "250"
},
{
"level" : "IV",
"upperLimit" : "250",
"lowerLimit" : "350"
},
{
"level" : "V",
"upperLimit" : "350",
"lowerLimit" : "-1"
}
]
},
{
"standardID" : "7439-89-6",
"unit" : "mg/L",
"classifications" : [
{
"level" : "I",
"upperLimit" : "0",
"lowerLimit" : "0.1"
},
{
"level" : "II",
"upperLimit" : "0.1",
"lowerLimit" : "0.2"
},
{
"level" : "III",
"upperLimit" : "0.2",
"lowerLimit" : "0.3"
},
{
"level" : "IV",
"upperLimit" : "0.3",
"lowerLimit" : "0.4"
},
{
"level" : "V",
"upperLimit" : "0.5",
"lowerLimit" : "-1"
}
]
}
]
}
Hasil yang anda ingin tanya:
{
"contents" : [
{
"standardID" : "9527-01",
"unit" : "mg/L",
"classifications" : [
{
"level" : "I",
"upperLimit" : "0",
"lowerLimit" : "50"
},
{
"level" : "II",
"upperLimit" : "50",
"lowerLimit" : "150"
},
{
"level" : "III",
"upperLimit" : "150",
"lowerLimit" : "250"
},
{
"level" : "IV",
"upperLimit" : "250",
"lowerLimit" : "350"
},
{
"level" : "V",
"upperLimit" : "350",
"lowerLimit" : "-1"
}
]
}
]
}
Bolehkah anda beritahu saya cara menulis db.xxx.find()
Saya ingin membuat ulasan terlebih dahulu:
Tanya soalan dan siarkan contoh masalah boleh dihasilkan yang diminimumkan Jika anda menyiarkan dokumen yang begitu panjang, semua orang akan bosan membacanya.
Apa yang anda perlukan sebenarnya ialah memulangkan beberapa dokumen tertentu dalam tatasusunan , bukan keseluruhan tatasusunan.
1 Jika anda hanya perlu mengembalikan satu elemen dalam tatasusunan
Baris pertama ialah syarat pertanyaan, dan baris kedua ialah syarat penapis. Anda boleh melihat bahawa pengendali juga boleh digunakan dalam keadaan penapis. Walau bagaimanapun, pengendali ini hanya akan mengembalikan elemen pertama yang memenuhi syarat dan memerlukan MongoDB versi 2.2 atau lebih tinggi .
Atau gunakan
$
pemilih subskrip:Syarat pertanyaan dalam contoh di atas juga boleh digunakan
$elemMatch
.Jika anda perlu mengembalikan berbilang elemen padanan dalam tatasusunan:
2
$unwind
beroperasi pada
$unwind
sebagai strim dokumen bebas dengan menggunakancontents
Untuk kod, lihat jawapan @bguo.Tetapi ini boleh menyebabkan masalah prestasi jika tatasusunan anda besar.
3
$filter
Ini ialah operator baharu dalam versi
3.2
, digunakan untuk menapis kandungan yang dikembalikan.Sudah tentu anda juga boleh menggunakan
$redact
(versi 2.6), ataumapReduce()
dan banyak kaedah lain.Syarat pertanyaan. Contohnya nama
Satu kaedah pelaksanaan: menggunakan Agregat MongoDB.
1. Mula-mula gunakan $unwind pada kandungan yang mengandungi tatasusunan
2. Kemudian gunakan $match untuk menggunakan syarat penapisan
3 Akhir sekali, gunakan $project untuk mengekalkan medan yang diperlukan
Rujuk kod di bawah
Untuk rujukan.
Sayangi MongoDB!
------------------------ Pemisah cantik------------------ --- ----------Stesen Hangzhou pada bulan Mac akan datang tidak lama lagi! ! ! Rakan-rakan yang berminat sila daftar segera! ! !