繁体   English   中英

MongoDB-带有其他文档的更新字段

[英]MongoDB - Update field with reference of another document

我希望可以通过引用另一个文档来更新集合中所有文档的字段。 我试图用下面的代码做到这一点:

var project = db.Project.find({slug:"engine"});

db.Activity.update({}, {$set:{'project':DBRef("Project", project._id, "mydb")}});

当我查看“活动”文档时,在“项目”字段中,结果是:

{
  _id: ObjectId("..."),
  "project": DBRef("Project", undefined, "mydb")
}

有没有办法正确地做到这一点?

提前致谢。

在我看来,您遇到了一个Promise回调问题。 您可以通过两种方式解决它:

选项一:将取决于数据返回值的函数放入第一个函数的回调中,例如:

db.Project.find({slug:"engine"}, function(error, data) {
    db.activity.update(...data.Id...);
});

选项二:等待查找结果完成:

var project = db.Project.find({slug:"engine"});

project.then(function(error,data) {
       db.activity.update(...project.Id...);
});

两者都应该起作用。 问题在于,当您进行第一个调用时,它将返回一个promise,而不是值本身。 如果您对此主题感到困惑,可以看一下:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

希望我的回答对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM