【问题标题】:Union in MongodbMongoDB中的联合
【发布时间】:2019-10-23 14:06:30
【问题描述】:

我一直在尝试解决一个关于 mongo 的简单查询

我在两个不同的集合上有两个集合 peopleorders。在 sql 上,这些是我可以执行以下操作的表:

(SELECT firstname as 'Col1' 
FROM people)

UNION

(SELECT name as 'Col1' 
FROM orders)

OFFSET 20
LIMIT 10;

但是我如何在 mongodb 上做到这一点?我看到了一些聚合的解决方案,但是当你加入它们时,这些解决方案有一些共同的领域,这个集合是完全不同的,我只想在联合之上做一个限制和偏移。

谢谢

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    试试这个查询

      db.people.aggregate(
      [
        { $limit: 1 },
        { $project: { _id: '$$REMOVE' } },
        { 
             $lookup: { from: 'people', pipeline: [{$project:{Col1:'$firstname'}}], as: 'people' }       
        },
        { 
             $lookup: { from: 'orders', pipeline: [{$project:{Col1:'$name'}}], as: 'orders' } 
    
        },
        { $project: { union: { $concatArrays: ["$people", "$orders"] } } },
        { $unwind: '$union' },
        { $replaceRoot: { newRoot: '$union' } },
        {$skip: 20},
        {$limit: 10},
      ]);
    

    【讨论】:

    • MongoDB Limits and Thresholds - BSON Limit。请不要建议将集合的全部内容放在单个文档中的数组中的代码。唯一可行的情况是整个集合可以容纳在 16MB 内。如果是这种情况,那么您首先不需要数据库。这根本无法在任何实际的实际规模上发挥作用。
    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多