首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mongoDB仅从聚合返回一个字段

mongoDB仅从聚合返回一个字段
EN

Stack Overflow用户
提问于 2021-07-21 07:45:39
回答 2查看 66关注 0票数 0

我有两个收藏品:

用户:

代码语言:javascript
运行
复制
"_id": {
    "$oid": "62f7gsda96211065456322a10fe"
},
"name": "test",
"roles": ["user"],
"type": "user",
"fullName": "Test Test",
"email": "test_test@test.com",
"password_scheme": "pbkdf2",
"iterations": 10,
"derived_key": "ef150b4daa328703e68ae57f112321580ce95aa4",
"salt": "1e22243068bbsbsdva8d6459a683e2903",
"isDiactivated": false,
"idclient": {
    "$oid": "60f7cca7321da11252a10fd"
}

时间守护者:

代码语言:javascript
运行
复制
"_id": {
    "$oid": "60f7ccbd62110611252a130a"
},
"dtstart": {
    "$date": "2020-06-01T15:24:35.388Z"
},
"idstory": {
    "$oid": "60f7ccad62110611252a1271"
},
"idworkday": {
    "$oid": "60f7ccbd62110611252a1308"
},
"dtend": {
    "$date": "2020-06-01T15:35:36.856Z"
},
"idclient": {
    "$oid": "60f7cca7321da11252a10fd"
},
"idowner": {
    "$oid": "62f7gsda96211065456322a10fe"
}

在查询中,我需要获取timelogs。Timelogs有一个"idowner“字段,该字段引用用户。我希望从timelogs获取所有数据,但也想从用户集合中获取用户的“名称”。

它应该是这样的:

代码语言:javascript
运行
复制
"_id": {
"$oid": "60f7ccbd62110611252a130a"
},
"dtstart": {
"$date": "2020-06-01T15:24:35.388Z"
},
"idstory": {
"$oid": "60f7ccad62110611252a1271"
},
"idworkday": {
"$oid": "60f7ccbd62110611252a1308"
},
"dtend": {
"$date": "2020-06-01T15:35:36.856Z"
},
"idclient": {
"$oid": "60f7cca762110611252a10fd"
},
"idowner": {
"$oid": "62f7gsda96211065456322a10fe"
},
"name": "test" 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-21 07:58:14

您可以使用$lookup连接2个集合。

代码语言:javascript
运行
复制
db.timelogs.aggregate([{ 
    $lookup: { 
                from: "user", //remote collection name
                localField: "idowner.oid", //timelogs collection field
                foreignField: "_id.oid", //remote collection mapping field
                as: "idowner" //to be imported as
              } 
  }
  ,{$unwind:"$idowner"}
,{$project:{ 
            dtstart:1,
            idstory:1,
            idworkday:1,
            dtend:1,
            idclient:1,
            idowner:"$idowner._id",
            name:"$idowner.name"
    }}
])
票数 1
EN

Stack Overflow用户

发布于 2021-07-21 08:19:39

代码语言:javascript
运行
复制
db.timelogs.aggregate([{ 
    $lookup: { 
                from: "user", 
                localField: "idowner.oid", 
                foreignField: "_id.oid", 
                as: "User" 
              } 
  }
  ,{$unwind:"$User"}
  ,{$project:{
   'User':'$User.name'
])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68465763

复制
相关文章

相似问题

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