【问题标题】:Project array content with mongodb使用 mongodb 项目数组内容
【发布时间】:2015-08-09 09:18:28
【问题描述】:

我的问题是,当我使用 MongoDB 2D 索引进行坐标时,一切正常,但 JSON 输出不是我想要的。

    var schema=new Schema({
        location:{
            type:[Number],  // [<longitude>, <latitude>]
            index:'2d',
            required:false
        }
    });

    **desired output**

    {
        "_id":"xxx",
        "longitude":18.056974411010742,
        "latitude":54.31120601701069,
    }

    **what i get**

    {
        "_id":"xxx",
        "location":[18.056974411010742,54.31120601701069]
    }


    **What i tried to do**
    db.foo.aggregate(
        {$project:{
        _id:1,
        longitude:"$location.0",
        latitude:"$location.1"
    }});

但显然它不起作用。我希望我能很好地解释这个问题。谢谢。

【问题讨论】:

    标签: arrays mongodb mongoose coordinates geospatial


    【解决方案1】:

    您需要首先在聚合管道中对 Location 数组执行 $unwind 运算符,然后在生成的文档中使用 $group 以应用累加器表达式 $first$last

    您的聚合管道应如下所示(未经测试):

    db.foo.aggregate([
        { "$unwind": "$location" },
        {
            "$group": {
                "_id": "$_id",
                "longitude": { "$first": "$location" },
                "latitude": { "$last": "$location" }
            }
        }
    ]);
    

    【讨论】:

    • 谢谢,这成功了!
    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2019-07-20
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    相关资源
    最近更新 更多