![](/img/trans.png)
[英]How to retrieve / find all elements of a nested array in MongoDB Java
[英]How to find length of embedded nested array in mongodb?
如何在 mongodb 中查找嵌入式嵌套数组的长度? 例如,我的 mongoDB 中有以下集合。 loc 字段包含坐标字段,它是一个数组,它再次包含另一个位于第 0 个索引中的数组。 如何找到 loc.corrdinates[0] 的长度? 我尝试使用聚合管道来做到这一点,但它给出了语法错误:
db.atolldata.aggregate([
{$project:{_id:0,
fileName:1,
sizeOfArray:{$size:"$loc.coordinates[0]"}}}]);
.
这是我的收藏
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阶段,将coordinates
数组展平,然后在$project
阶段中找到size
。
db.atolldata.aggregate([
{$unwind:"$loc.coordinates"},
{$project:{"_id":0,"fileName":1,
"sizeOfArray":{$size:"$loc.coordinates"}}}
])
您可能希望创建一个具有数组大小的字段来使用它:
{$set : {arraySize: {$size: {$arrayElemAt : ['$loc.coordinates', 0]}}}}
请记住,所有文档都必须包含 loc 字段,否则聚合将失败(因此您必须先使用 $match 过滤这些文档)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.