您的位置:首页 > 数据库 > Mongodb

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其实也就相当于分页的作用啦。

 

执行结果:

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: