需要一个很简单的功能,就是获取数组大小。例如有这样数据:
{
"name":"test",
"arr":[{"num":0},{"num":1},{"num":2}]
}
然后我再次插入数据时候,需要获取一下arr这个数组的长度。实现类似这样的功能:
update({},{
$addToSet:{"arr":
{"num":(这里需要的是当前arr数组的长度,即3)}
}
})
想进办法目前暂时没有实现。不知道是否有办法查询出数组长度。
而不是$size那种按数组长度查询。这个没有用啊。
没人回答,不过目前自己想到了一个办法,就是在外层维护一个字段:“arrCount”,初始插入数据时赋值0,之后每当需要内层addToSet时,就给外层的arrCount进行一下$inc
哈哈,刚刚找到了这个方法,我试了一下,可以用,你可以试试哈
db.table2.aggregate([{"$match":{"name":"test123","arr": {$exists:true}}},{"$project": {"_id":0,"name":1,"sizeOfAll":{"$size": "$arr"}}}
])
table2为表名。可以返回数量。可参考网址https://blog.csdn.net/luoduyu/article/details/78288258