首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB -使用另一个文档的引用更新字段

MongoDB -使用另一个文档的引用更新字段
EN

Stack Overflow用户
提问于 2017-02-23 17:52:31
回答 1查看 1.6K关注 0票数 0

我想如果可以更新一个集合中所有文档的字段,并引用另一个文档。我试着用下面的代码做到这一点:

代码语言:javascript
运行
复制
var project = db.Project.find({slug:"engine"});

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

当我在"project“字段中查看活动文档时,结果是:

代码语言:javascript
运行
复制
{
  _id: ObjectId("..."),
  "project": DBRef("Project", undefined, "mydb")
}

有没有一种方法可以正确做到这一点?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-02-23 21:02:45

在我看来你遇到了承诺回调的问题。你可以用两种方法解决这个问题:

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

代码语言:javascript
运行
复制
db.Project.find({slug:"engine"}, function(error, data) {
    db.activity.update(...data.Id...);
});

选项二:等待find的返回完成:

代码语言:javascript
运行
复制
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

希望我的回答对你有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42412223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档