我有这样的结构文件:
// my structure
{
"_id": ObjectId("5710e8d017487952a074027c"),
"ID": "W1",
"judul": "Candi Prambanan",
"jenis": "Candi",
"lokasi": [
{ "prov": "Yogyakarta" },
{ "kota": "Sleman" }
],
"deskrip": "Candi Prambanan terletak di lingkungan Taman."
}
现在我尝试使用mongodb的聚合查询,如下所示:
// query 1
db.wisata.aggregate([
{"$unwind": "$lokasi"},
{"$match": {
"lokasi.kota": { "$exists": true, "$ne": null }
}},
{"$group": { _id: "$lokasi.kota"}}
])
//result
{
"result": [
{"_id": "Kampar" },
{"_id": "Magelang"},
{"_id": "Bantul"},
{"_id": "Sleman"}
],
"ok": 1
}
我希望将匹配用于这样的标准:
//query 2
db.wisata.aggregate([
{"$match": {
"lokasi.prov": "Yogyakarta"
}},
{"$group": {_id:"$lokasi.kota"}}
])
//result
{
"result": [
{"_id": ["Bantul"]},
{"_id": ["Sleman"]}
],
"ok": 1
}
问题我如何使用我的标准,如查询2,但我得到的结果像查询1,我尝试这样:
//query 3
db.wisata.aggregate([
{"$unwind": "$lokasi"},
{"$match": {
"lokasi.prov": "Yogyakarta"
}},
{"$group": {_id:"$lokasi.kota"}}
])
//result
{
"result" : [
{"_id" : null}
],
"ok" : 1
}
但结果是null
,请帮助我们,非常感谢...
答案 0 :(得分:2)
尝试以下聚合查询:
db.wisata.aggregate([
{"$match": {"lokasi.prov": "Yogyakarta"}},
{"$group": {"_id": "$lokasi.kota"}},
{"$unwind": "$_id"}
])