pymongo更新位置d

2024-05-14 11:11:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更新一个包含lat,lng的数组价值观。我的下面给出了python的更新查询。在

client.mydb.mycoll.update({"_id":123},{'$push':{"loc":{"lng":77.77,"lat":12.12}}} )

集合在“loc”数组中已经有一些值,如下所示

^{pr2}$

update查询的问题是它将新的“loc”元素存储为

{ "_id" : 123, "loc" : [ { "lng" : 77.6104193, "lat" : 12.9264116 },{"lat":12.12,"lng":77.77} ], "name" : "myname" }

我需要先按“lng”的顺序存储loc数据,然后再按“lat”的顺序存储loc数据,以便以后可以使用$near运算符({loc:{$near:[77.77,12.12]}})进行查询关键。怎么做我能做吗?在


Tags: 数据clientidupdate数组pushloclng
2条回答

我建议稍微修改一下结构,以匹配MongoDB manual中的结构:

coordinates : [ <longitude> , <latitude> ]

最后你会得到这样的结果:

^{pr2}$

MongoDB保留数组的顺序,但不保证保留对象字段(See this answer to a similar question)的顺序。在

经过一番研究,我在python文档中找到了OrderedDict。在

from collections import OrderedDict

client.mydb.mycoll.update({"_id":123},{'$push':{"loc":OrderedDict((("lng",77.77),("lat":12.12)))}} )

相关问题 更多 >

    热门问题