Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb:通过混合两个单独的文件添加数组字段_Mongodb_Mongodb Query - Fatal编程技术网

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

Mongodb:通过混合两个单独的文件添加数组字段,mongodb,mongodb-query,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("7b

我有这个模式:

{
    "_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 ] } }
    );
}  
我已用于此查询,但它没有正确答案。在我的查询中,仅第一个字段更新如下:

{...
"Point" : [ 
        [ 
            UUID("13fe657e-6f39-4396-a6d1-dc70ddf38201"), 
            "49.996898333333334"
        ], 
        [ 
            UUID("99aa3773-a444-48cb-80ae-958181633fd9"), 
            "49.998398333333334"
        ],...
}
这不是我想要的东西??我的错在哪里? 首先我做了一个查询,然后我一个文档一个文档地更新了!!!!
感谢您的帮助……

您只需要在此处使用
$set
,而不是
$addToSet
。无论如何,您确实应该做一些类似于
{“$set”:{“location”:{“type”:“Point”,“coordinates”:[lng,lat]}}}}
的事情,因为这实际上是一种受支持的GeoJSON格式,可用于MongoDB的地理空间查询操作。但我不想使用GeoJSON。我想使用
2D索引
。我将检查
set
dude@Neillundude按集合我无法创建:点[lng,lat]。我已经改变了我的问题:但在你问题上方的大型突出链接上,我仍然遇到了同样的问题@NeilLunnLook。这里有不止几个直接的例子供你学习。这些都是用来帮助你的,所以你应该使用它们。@NeilLunn谢谢你,伙计。你总是帮助我。再次谢谢你