首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB联合All?

MongoDB联合All?
EN

Stack Overflow用户
提问于 2019-06-11 06:14:01
回答 1查看 558关注 0票数 0

我正在尝试将3个集合合并在一个集合中,但无法使其工作(与所有集合合并一样)。举个例子,我有3个集合:

1:活跃用户

代码语言:javascript
复制
[{_id:'', client_id:'',created:''}]

2:非活跃用户

代码语言:javascript
复制
[{_id:'', visitor_id:'',created:''}]

3:阻止的用户

代码语言:javascript
复制
[{_id:'', blocked_id:'',created:''}]

我正在尝试做的是将所有3个集合组合成一个集合,按日期对它们进行排序,并确保我得到前10个结果,类似于:

代码语言:javascript
复制
[{_id:'', client_id:'',created:''},
 {_id:'', blocked_id:'',created:''},
 {_id:'', visitor_id:'',created:''}]

我想出了这个代码:

代码语言:javascript
复制
collection('active).aggregate([        
       {  
          "$facet":{  
             "active":[  
                {"$match":{  "client_id": 5cfe83820c19ee3c50c8f323 }}
             ],
             "not_active":[  
                {"$match":{"cust_id":"5cfe83820c19ee3c50c8f323" }}
             ],
             "blocked":[  
                {"$match":{"blocked_id":"5cfe83820c19ee3c50c8f323" }}
             ]
          }
       },
       {  
          "$skip":0
       },
       {  
          "$limit":10
       },
       {  
          "$sort":{  
             "created":-1
          }
       }
])

但此代码返回空数组:

代码语言:javascript
复制
[ { active: [], not_active: [], blocked : []} ] 

我做错了什么?谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 09:03:48

最后,我想出了这样的代码来完成这项工作:

代码语言:javascript
复制
mongo.clients.aggregate([
         {$limit:1},{$project:{_id:1}},{$project:{_id:0}},
         {$lookup : {from:'active',as:'active',pipeline:[{$match:{}}]}},
         {$lookup : {from:'not_active',as:'not_active',pipeline:[{$match:{}}]}},
         {$lookup : {from:'blocked',as:'blocked',pipeline:[{$match:{}}]}},
         {$project:{Union:{$concatArrays:['$active','$not_active','$blocked']}}},
         {$unwind:"$Union"},
         {$replaceRoot:{newRoot:"$Union"}},
         {$skip:0},
         {$limit:10},
         {$sort:{'created': -1}}
]).then(x);

这里有更详细的答案:enter link description here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56534161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档