Mongodb:通过混合两个单独的文件添加数组字段

时间:2018-05-28 04:55:30

标签: mongodb mongodb-query

我有这个架构:

{
    "_id" : UUID("f61dacb9-7687-40ea-8c23-b1d7364a95f8"),
    "Lat" : "39.74719833333334",
    "Lng" : "57.2768",
    "CreationDateTime" : ISODate("2017-11-11T08:06:42.729Z"),
    "DeviceId" : "89984320000897548912",
    "UserId" : UUID("7bc16d9a-9ac4-47af-bc28-adad1622a054"),
    "UserName" : "admin",

},...

正如你所看到的,我有这些字段: Lat和Lng 。现在我已经确定这些字段组合在一起作为如下所示的数组:

    {
        "_id" : UUID("f61dacb9-7687-40ea-8c23-b1d7364a95f8"),
        "Lat" : "39.74719833333334",
        "Lng" : "57.2768",
        "CreationDateTime" : ISODate("2017-11-11T08:06:42.729Z"),
        "DeviceId" : "89984320000897548912",
        "UserId" : UUID("7bc16d9a-9ac4-47af-bc28-adad1622a054"),
        "UserName" : "admin",
        "Point" : [ 
           57.2768, 
           39.74719833333334
        ] ,
},....

为此,我写了这个查询:

db.Locations.find().forEach(function(data){
    up(data["_id"],data["Lng"], data["Lat"]);
});
var up = function (id,lng,lat){
    db.Locations.updateOne(
        {_id : id},
        { $addToSet: {Point: [ lng, lat ] } }
    );
}  

我已将addToSet用于此查询,但它没有正确答案。在我的查询中,第一个字段更新如下:

{...
"Point" : [ 
        [ 
            UUID("13fe657e-6f39-4396-a6d1-dc70ddf38201"), 
            "49.996898333333334"
        ], 
        [ 
            UUID("99aa3773-a444-48cb-80ae-958181633fd9"), 
            "49.998398333333334"
        ],...
}

这不是我想要的东西?我的错误在哪里? 首先,我进行查询,然后我逐个文档更新!!!! 谢谢你的帮助...

0 个答案:

没有答案