Mongodb查询项目

时间:2015-01-12 13:54:45

标签: mongodb mongoose mongodb-query

我遇到了这个mongodb查询结果的问题。我尝试了不同的方法来解决这个问题,但我总是得到同样的错误。我怎么能这样做?

Recommend.aggregate(
            [
                // grouping pipeline
                { "$group": { 
                    "_id": '$venue',
                    "recommendCount": { "$sum": 1 }
                   }
            },
                // sorting pipeline
                { "$sort": { "recommendCount": -1 } },
                // optionally limit results
                { "$limit": 20 }
            ],
            function(err,result) {

            }
        );

现在我的结果是:

\"_id\": {
                \"id\": \"4b510337f964a520893d27e3\",
                \"name\": \"BotecoSaoBento\",
                \"contact\": \"55193259-1674\",
                \"lat\": \"-22.899043080634886\",
                \"lng\": \"-47.050360218498184\",
                \"city\": \"Campinas\"
            },
            \"recommendCount\": 3
        }

但我需要这种格式:

   {
        \"id\": \"4b510337f964a520893d27e3\",
        \"name\": \"BotecoSaoBento\",
        \"contact\": \"55193259-1674\",
        \"lat\": \"-22.899043080634886\",
        \"lng\": \"-47.050360218498184\",
        \"city\": \"Campinas\",
        \"recommendCount\": 3
    }

我不知道是否需要更改我的$ group或在此mongodb查询中插入新的$ project。

架构是:

var recommendSchema = mongoose.Schema({
        facebookId: String,
        venue: {
            id: String,
            name: String,
            description: String,
            contact: String,
            lat: String,
            lng: String,
            city: String
        },
        insertDate: Date
    })

1 个答案:

答案 0 :(得分:2)

据我所知,你需要添加一个$ project:

{$project: 
  {
    _id: false,
    id: "$_id.id",
    name: "$_id.name",
    city: "$_id.city",
    contact: "$_id.contact",
    lat: "$_id.lat",
    lng: "$_id.lng",
    recommendCount: true
  }
}