我怎样才能收集所有字段及其值,除了其中五个,并将它们放在同一个集合中的新字段中 mongoDB
How can I gather all fields with their values except five of them and put them inside new field in the same collection with mongoDB
我有一个集合,其中包含许多字段太多的文档,但我想在名为 Data 的新字段中收集许多这些字段,这是一个示例
{
"_id" : ObjectId("***********"),
"name" : "1234567890",
"mobile" : "Test",
.
.
.
.
.
etc
}
我想使用 updateMany 使集合中的所有文档看起来像这样
{
"_id" : ObjectId("***********"),
"name" : "1234567890",
"mobile" : "Test",
"Data":{
.
.
.
.
.
etc
}
}
选项 1(嵌套字段很少):您可以按照以下方式进行:
db.collection.update({},
[
{
$project: {
data: {
name: "$name",
mobile: "$mobile"
}
}
}
],
{
multi: true
})
方案二:(如果需要嵌套的字段太多):
db.collection.update({},
[
{
$project: {
data: "$$ROOT",
name: 1,
mobile: 1
}
},
{
$unset: [
"data.name",
"data.mobile"
]
}
],
{
multi: true
})
我有一个集合,其中包含许多字段太多的文档,但我想在名为 Data 的新字段中收集许多这些字段,这是一个示例
{
"_id" : ObjectId("***********"),
"name" : "1234567890",
"mobile" : "Test",
.
.
.
.
.
etc
}
我想使用 updateMany 使集合中的所有文档看起来像这样
{
"_id" : ObjectId("***********"),
"name" : "1234567890",
"mobile" : "Test",
"Data":{
.
.
.
.
.
etc
}
}
选项 1(嵌套字段很少):您可以按照以下方式进行:
db.collection.update({},
[
{
$project: {
data: {
name: "$name",
mobile: "$mobile"
}
}
}
],
{
multi: true
})
方案二:(如果需要嵌套的字段太多):
db.collection.update({},
[
{
$project: {
data: "$$ROOT",
name: 1,
mobile: 1
}
},
{
$unset: [
"data.name",
"data.mobile"
]
}
],
{
multi: true
})