mongodb 跨多个集合更新数据

4sup72z8  于 2023-01-25  发布在  Go
关注(0)|答案(1)|浏览(169)

我目前正在研究在C#中跨多个集合更新数据的最佳方法。
我的一个示例用例是我有2个集合:

  • 集合1 =控制台
  • 集合2 =游戏

控制台集合如下所示:_id、名称、发布年份、缩略图URL、启用
游戏集合如下所示:_id、名称、发布年份、缩略图URL、控制台
其中控制台子文档如下所示:_ID、名称、缩略图URL
在SQL服务器的世界里,我会建立一个链接,然后创建一个内部连接来收集数据,但是在MongoDb中,我被教导要复制数据。
如何更新控制台集合中的控制台名称,并更新所有子文档,以更新具有我刚刚在控制台集合中修改的标识符的控制台的控制台名称?
我正在寻找一个了解我将如何去做这件事,并继续前进,我正在寻找添加更多的集合,所有类似的子文档引用,但需要能够更新一切尽可能直接。

s4chpxco

s4chpxco1#

在mongodb中,我们在这里不这样做,(将整个文档嵌入到另一个文档中)。
1.它占用了很多空间
1.如果集合变得太大,它可能会超过mongodb的文档大小,这可能会导致问题
相反,我们保留文档的引用,而不是整个文档或子文档。例如,在nodejs中:

用户

const userSchema = new Schema({
    name: {
        type: String,
        default: null
    },
    phoneNumber: {
        type: String,
        default: null
    },
    email: {
        type: String,
        default: null
    },
});
const user = mongoose.model("user", userSchema);
module.exports = user;

家庭

const familySchema = new Schema({
    familyName: {
        type: String,
        default: true
    },
    location:
    {
        type: String,
        require: true
    },
    users: [
        {
            type: ObjectId,
            ref: "user",
            require: true
        }
    ]
});
const family = mongoose.model("family", familySchema);
module.exports = family;

在这种情况下,我们不需要更新子文档,在您的情况下,您正在维护,而我们只是更新原始文档,另一个文档中的引用为我们更新文档服务。

查询

db.users.update(
   { 
     _id: 1 
   },
   {
     $set: { name: "Ali" }
   }
)

相关问题