在我的MongoDB數據庫中,我有一個名爲測試集,看起來像這樣用$項目運營商字段:不能包含在MongoDB中查詢
{
"_id" : ObjectId("5774f2807f93c094a6691506"),
"name" : "jack",
"city" : "LA",
"age" : 30.0,
"cars" : 0
}
{
"_id" : ObjectId("5774f2be7f93c094a6691507"),
"name" : "jack",
"city" : "LA",
"age" : 40.0,
"cars" : 0
}
{
"_id" : ObjectId("5774f2ed7f93c094a6691508"),
"name" : "peter",
"city" : "London",
"age" : 35.0,
"cars" : 1
}
我已經做了查詢,其按名稱組中的人和城市,只顯示每個組的最古老的元素。此外,它只顯示至少有一輛車的傢伙。查詢看起來是這樣的:
db.getCollection('test').aggregate([
{
"$match":{"cars":{$ne:0}}
},
{
"$group": { "_id": { name: "$name", city: "$city" }, "age":{$max:"$age"}}
}
,
{
"$project":{"age":1, "name":"$_id.name", "city":"$_id.city", "cars":true}
}
])
執行上面的查詢,我得到以下結果後:
{
"_id" : {
"name" : "peter",
"city" : "London"
},
"age" : 35.0,
"name" : "peter",
"city" : "London"
}
這是正確的,因爲彼得是擁有一輛汽車的唯一的人。問題是它不顯示「cars」字段。正如你在查詢中看到的那樣,有一個$ project操作符,並且「cars」字段被設置爲true。所以它應該被顯示。
你應該在'$ match'表達式中使用'$ gt'。 – styvane