MongoDB의 쿼리에 $ 프로젝트 운영자와 필드를 포함 할 수 없습니다 : 나는 쿼리 만든내가 다음과 같습니다 test라는 모음이 내 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