gpt4 book ai didi

mongodb - 如何在MongoDB中将两个字段合并为一个字段

转载 作者:行者123 更新时间:2023-12-04 10:06:22 25 4
gpt4 key购买 nike

以下是产品集合示例文档:

{ _id:'xxxxxxxxxxxx',
name:'product 1'
}
{ _id:'xxxxxxxxxxxx',
name:'product 2'
}

如何将 id 字段值分组到 mongodb 中的名称字段值?

预期结果:
[{'xxxxxxxxxxxx:'product1'},{'xxxxxxxxxxxx':'product2'}]

最佳答案

您可以尝试以下聚合查询:

在 MongoDB 版本上 >= 4.2 :

db.collection.aggregate([
{
$replaceWith: {
$arrayToObject: [
[
{
k: { $toString: "$_id" },
v: "$name"
}
]
]
}
}
])

测试: mongoplayground

在 MongoDB 版本上 >= 4.0 :
db.collection.aggregate([
{
$replaceRoot: {
newRoot: {
$arrayToObject: [
[
{
k: { $toString: "$_id" },
v: "$name"
}
]
]
}
}
}
])

测试: mongoplayground

以防万一如果您有更多字段并希望在最终结果中保留文档中的所有字段,请在 MongoDB 版本上尝试此操作 >= 4.0 :
db.collection.aggregate([
{
$replaceRoot: {
newRoot: {
$mergeObjects: [
{
$arrayToObject: [ [ { k: { $toString: "$_id" }, v: "$name" } ] ]
},
"$$ROOT"
]
}
}
}
])

测试: mongoplayground

注意:因为对象中的键必须是 string 类型& 不能容纳 ObjectId() 的类型我们正在转换 _id值到 string , 如果您的 _id是字符串类型,则无需使用 $toString运算符(operator)。

引用: aggregation-pipeline-stages

关于mongodb - 如何在MongoDB中将两个字段合并为一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61569050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com