mongodb - 在mongoDB聚合中选择组后的所有字段
问题描述
我在 mongoDB 中有文档,例如:
{
"_id": "myId",
"firstName": "myFirstName",
"lastName": "myLastName",
"email": "my@email.com",
"age": 88,
"city": "myCity",
"country": "myCountry"
}
然后,我有lookup
,unwind
和group
_id 在管道中。当我需要所有字段时,有没有办法不列出所有字段?
{
$group: {
"_id": "$_id",
"someItemsFromLookup": { "$push": "$someItemsFromLookup" }
"firstName": { "$first": "$firstName" },
"lastName": { "$first": "$lastName" },
"email": { "$first": "$email" },
"age": { "$first": "$age" },
"city": { "$first": "$city" },
"country": { "$first": "$country" }
}
}
我需要这样的东西,*
“所有领域”在哪里:
{
$group: {
"_id": "$_id",
"someItemsFromLookup": { "$push": "$someItemsFromLookup" }
"*": { "$first": "*" },
}
}
解决方案
您可以$$ROOT
与$first
累加器一起使用,然后$replaceRoot
与第一个字段一起使用以将其放在根位置。
{ "$group": {
"_id": "$_id",
"someItemsFromLookup": { "$push": "$someItemsFromLookup" },
"first": { "$first": "$$ROOT" }
}},
{ "$replaceRoot": {
"newRoot": {
"$mergeObjects": [
"$first",
{ "someItemsFromLookup": "$someItemsFromLookup" }
]
}
}}
推荐阅读
- flutter - 水平排列多个图像(颤动)
- reactjs - 在 TypeScript 的 React 组件中实现“as”prop
- javascript - AWS 上托管的静态网站中的环境变量
- api - 如何从 JSON 字符串配置自定义对象?
- php - As new to php i am not clear over the jumps betveen php-pages. My code below. is this the right way?
- flask - Socket handshake error when using gunicorn
- ios - 如何设置 CoreML 模型?
- c++ - Correct way to start a function object thread in C++?
- sequelize.js - How to prevent Sequelize from summarizing / reducing result (distict) when including additional association?
- c# - How to convert a $('#form').serializeArray() to c# class object with Ajax?