查询文档中的特定对象&;可视化-MongoDB
我的MongoDB中存储了一个复杂的geojson文档。我的目标是检索适用于我的条件的对象,例如: 我想在查询文档中的特定对象&;可视化-MongoDB,mongodb,geospatial,geojson,robo3t,nosql,Mongodb,Geospatial,Geojson,Robo3t,Nosql,我的MongoDB中存储了一个复杂的geojson文档。我的目标是检索适用于我的条件的对象,例如: 我想在'features.properties.name'字段中检索包含“avenue”的对象。我尝试过:db.LineString.find({'features.properties.name':“Avenue”})结果: 如您所见,这将返回整个文档。我的目标只是返回满足给定条件的对象,如高亮显示的对象0。此外,结果是否可以以某种方式可视化 find(arg1) 命令可以对存储在集合中的文
'features.properties.name'
字段中检索包含“avenue”的对象。我尝试过:db.LineString.find({'features.properties.name':“Avenue”})
结果:
如您所见,这将返回整个文档。我的目标只是返回满足给定条件的对象,如高亮显示的对象0
。此外,结果是否可以以某种方式可视化
find(arg1)
命令可以对存储在集合中的文档使用returns,因此它可以搜索嵌套文档,但不能返回顶级集合文档的一部分。它返回所有文档
如果您的文档结构正常,请尝试使用此
find(arg1, arg2)
而是限制返回的字段
如果您的文档结构不规则,请使用您最喜欢的编程语言编写脚本经过大量研究,我找到了一种方法,可以实际查询特定对象并使用RoboMongo和 对于查询部分,我们可以按照规定使用以下技术: 在这里,我们使用聚合阶段来定义要检索的字段。之后,我们使用以检索具有特定条件的文档。请注意,第一个匹配可以利用索引(文本、空间等),并大大缩短时间。通过右键单击MongoDB中的文档,我们可以查看并存储生成的JSON 但是,在处理空间数据时,您可能希望将数据放在地图中,尤其是在处理复杂结构时。为此,您需要将数据从JSON转换为GeoJSON。下面我将展示我用来转换文件的正则表达式 算法JSON文件(从MongoDB生成)到GeoJSON:
“功能”:\{.*
和坐标[^}]*\K\}
和“类型”:“功能”
和和
“id”:ObjectId(*`
”类型“:”功能集合“,[^}]*\}
,替换为“”类型“:”功能“,
”和“”结果“:[
替换为“”功能“:[
{
“类型”:“FeatureCollection”,
“crs”:{“类型”:“名称”,“属性”:{“名称”:“urn:ogc:def:crs:ogc:1.3:CRS84”},
“功能”:[
“功能”:\{.*}“坐标”[^}]*\K\}|“类型”:“功能”|“确定”:1.0000000000000000 |“id”。*,|“| id”:ObjectId\(.*,
“类型”:“功能集合”[^}]*\},
替换为“类型”:“功能”,
享受:)@JohnnyHK$elemMatch和$only只返回第一个匹配项。您有返回所有匹配项的解决方案吗?如果您想要所有匹配项,请参阅使用
aggregate
的问题的两个答案。@JohnnyHK非常感谢。我将对其进行更多研究……您知道我是否可以提取结果d文档转换为GeoJSON格式?似乎我可以生成JSON
文档,但不能生成GeoJSON
文档。。
//[Thematic] Finds all the LineString documents that contain “Avenue” in their name.
db.LineString.aggregate(
{ $match : {
"features.properties.name": /avenue/i
}},
{ $unwind : "$features" },
{ $match : {
"features.properties.name": /avenue/i
}}
)