gpt4 book ai didi

mongodb - 将现有的 mongodb 数据更新到嵌入式文档中

转载 作者:可可西里 更新时间:2023-11-01 10:47:26 29 4
gpt4 key购买 nike

我是 MongoDB 的新手,所以这可能是一个基本问题(希望如此)。我目前有 1000 万条记录,其中 410 个字段加载到 mongodb 集合中,如下所示:

    {
"_id" : ObjectId("........"),
"AddressID" : 123455,
"IndividualId" : 1,
"personfirstname" : "FirstName",
"personmiddleinitial" : "M",
"personlastname" : "LastName",
"etc": "....."

}

我需要像这样将所有这些数据包装到一个嵌入式文档中:

    {
"_id" : ObjectId("........"),
"data" : {
"AddressID" : 123455,
"IndividualId" : 1,
"personfirstname" : "FirstName",
"personmiddleinitial" : "M",
"personlastname" : "LastName",
"etc": "....."
}

我不一定需要就地更新此数据,但那会很好。如果我需要以某种方式导出此数据并指定新格式,然后重新导入新的更新数据就可以了。通过 MongoDB shell 执行此操作是理想的。

最佳答案

正如 chridam 在评论中所建议的,您可以执行以下聚合管道:

db.collectionName.aggregate([
{ $project: { _id: "$_id", data: "$$ROOT" } },
{ $out: "newCollectionName" }
]);

这样,您在根级别和 data 对象中都有 _id 字段。因此,您可以执行大量更新以取消设置第二个更新:

db.newCollectionName.updateMany(
{},
{ $unset: { "data._id": "" } }
);

最后,您可以删除第一个集合并重命名第二个集合以在更新后的集合上恢复原始名称:

db.collectionName.drop();
db.newCollectionName.rename("collectionName");

这种方法完全适用于数据库,避免获取您的 1000 万个文档中的任何一个。

关于mongodb - 将现有的 mongodb 数据更新到嵌入式文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48965287/

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