MongoDB 内嵌数组(多维数组)查询并分页
2018-07-10 00:15
120 查看
Verion:3.6
目标:查询指定文档中指定数组中的数组数据。
这是其中一个文档:
现在需要获取id值为5b41bfeddb27d50ae976ba56的元素的reply数组中的第二个元素。
使用find+project+slice无论我怎样试都无法实现我的需求。
所以对于这种层层嵌套的复杂数据,可以使用aggregate来逐步获取。
Aggregate聚合管道就是在一个处理完毕把结果传递给下一个管道处理。这里我用到了$match,$unwind,$project这几个管道,可能有更好的方法,希望大家提出来!
使用如下语句:
aggregate([{$match:{"comment._id":ObjectId('5b41bfeddb27d50ae976ba56')}},{$unwind:"$comment"},{$match:{"comment._id":ObjectId('5b41bfeddb27d50ae976ba56')}},{$project:{"comment.reply":{$slice:["$comment.reply",1,1]}}}]).pretty()
就是通过逐步分解外层数组得到,其中$unwind很关键,它把一个数组的元素分到单独的文档中,然后就得到一组只有comment元素是不同的数据。$match的功能很明显就是匹配文档。$project用来对文档增删。$slice其实也就相当于分页的作用啦。
执行结果:
阅读更多
相关文章推荐
- MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
- MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
- mongodb 对内嵌文档(数组) group分页查询,并设置查询条件
- MongoDB查询(数组、内嵌文档和$where)
- MongoDB查询(数组、内嵌文档和$where)
- MongoDB查询内嵌数组(限定返回符合条件的数组中的数据)(1)
- Spring data mongodb 聚合,投射,内嵌数组文档分页.
- 学习MongoDB--(4-2):MongoDB查询(数组、内嵌文档和$where)
- morphia查询mongodb内嵌文档-数组查询$elemMatch|hasThisElement实例
- 学习MongoDB--(4-2):MongoDB查询(数组、内嵌文档和$where)
- 学习MongoDB 五: MongoDB查询(数组、内嵌文档)(二)
- MongoDB——$elemMatch(数组的内嵌文档查询匹配)
- mongodb数组与内嵌文档查询
- MongoDB查询内嵌数组(限定返回符合条件的数组中的数据)(1)
- C# mongodb中内嵌文档数组条件查询
- MongoDB查询 之 数组、内嵌文档和$where
- mongodb 内嵌数组查询
- Mongodb内嵌数组的完全匹配查询
- MongoDB查询(数组、内嵌文档和$where)
- mongodb内嵌文档的查询