java - 如何查找mongodb中嵌入嵌套数组的长度?

标签 java spring web-services hibernate mongodb

如何查找 mongodb 中嵌入嵌套数组的长度?例如, 我的 mongoDB 中有以下集合。 loc 字段包含坐标字段,它是一个数组,并且它再次包含另一个位于第 0 个索引的数组。 如何找到 loc.corrdinates[0] 的长度? 我尝试使用聚合管道来做到这一点,但它给出了语法错误:

db.atolldata.aggregate([
                        {$project:{_id:0,
                                   fileName:1,
                         sizeOfArray:{$size:"$loc.coordinates[0]"}}}]); 

这是我的 Collection

db.mydb.findOne();

{
    "_id" : ObjectId("54ccb36fe4b0ff85abfee006"),
    "_class" : "com.inn.signaleye.model.AtollData",
    "rsrp" : "-124",
    "index" : 1,
    "rgb" : [
        192,
        157,
        0
    ],
    "loc" : {
        "type" : "Polygon",
        "coordinates" : [
            [
                [
                    91.5254213240325,
                    26.225096
                ],
                [
                    91.5254099392226,
                    26.225999
                ],
                [
                    91.52591034644685,
                    26.226004
                ],
                [
                    91.52592172739666,
                    26.225101
                ],
                [
                    91.5254213240325,
                    26.225096
                ]
            ]
        ]
    },
    "fileName" : "RSRP_ZOne46N_20m_SCFT.shp"
}

最佳答案

利用$unwind阶段,压平坐标数组,然后在$project阶段找到size

db.atolldata.aggregate([
{$unwind:"$loc.coordinates"},
{$project:{"_id":0,"fileName":1,
           "sizeOfArray":{$size:"$loc.coordinates"}}}
])

关于java - 如何查找mongodb中嵌入嵌套数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253590/

相关文章:

java - PaintComponent 未在 JPanel 中调用

java - DWR安全异常: HttpSessionId is blank in POST request

java - 如何强制通过@Value 注释进行属性注入(inject)?

java - 我可以使用 Java 为 LinkedIn 开发桌面应用程序吗?

c# - 共享来自多个 Web 引用的数据类型

java - 到 glassfish 的纯 java 应用端口

java - 如何解决定期通知不发送的问题

java - 如何将方法链接到 GUI?

java - 如何将 SOAP 方法转换为 Restful API?

php - 将数据从 C++ exe 返回到 web