将此数据集作为 mongoDB 中的用户模式对象数组返回

Posted

技术标签:

【中文标题】将此数据集作为 mongoDB 中的用户模式对象数组返回【英文标题】:Return this dataset as an array of user schema objects in mongoDB 【发布时间】:2018-04-14 06:14:48 【问题描述】:

我正在使用 MongoDB Aggregation $lookup 来查询两个不同的架构集合。

我要做的是返回已添加到每个艺术家收藏中的所有用户。

这是艺术家架构


"_id" : ObjectId("59f7a13163241a5c8a580832"),
"artistID" : "34657839393",
"artistName" : "Mc squared",
"userID" : ObjectId("599f14855e9fcf95d0fe11a7"),
"__v" : 0

Artist.aggregate([
    
        $match:  artistID 
    ,
    
        $lookup: 
            from: "users",
            localField: "userID",
            foreignField: "_id",
            as: "UsersWithMatchedArtist"
        
    ,
    
        $project: 
            UsersWithMatchedArtist: 1
        
    

])

这将返回以下数据结构。

[
  
    "_id": "59f8f40686f2fa623d815256",
    "UsersWithMatchedArtist": [Users Schema]
  ,
  
    "_id": "59f8f40686f2f12345678901",
    "UsersWithMatchedArtist": [Users Schema]
  
]

我希望数据按以下结构返回

[
  Users Schema,
  Users Schema
]

关于如何做到这一点的任何建议?建议将不胜感激!干杯!

【问题讨论】:

【参考方案1】:

我得到了使用以下查询后的数据集:

Artist.aggregate([
     
            $match:  artistID 
        ,
        
            $lookup: 
                from: "users",
                localField: "userID",
                foreignField: "_id",
                as: "UsersWithMatchedArtist"
            
        ,
        
            $project: 
                user: 
                    $arrayElemAt: ["$UsersWithMatchedArtist", 0]
                
            
        ,
        
            $replaceRoot: 
                newRoot: "$user"
            
        
  ])

这会返回数据集

[
  Users Schema,
  Users Schema
]

【讨论】:

以上是关于将此数据集作为 mongoDB 中的用户模式对象数组返回的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB数据库 : 管道,用户管理,副本集等

我们如何处理 MongoDB 连接、模式?

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

如何在 Python 中为递归对象创建 Mongo 文档模式?

Mongodb和mysql的区别

mongodb