MongoDB:为什么这个存储的JS函数return没有一个值?

MongoDB: Why doesn't this stored JS function return a value?

考虑这个虚拟函数:

db.system.js.save({
    _id:"findId", 
    value:function(){
        var doc = db.test.find({"_id": "1"})
        return doc['_id']
    }
    })

当 运行 它时,我在 return 中什么也得不到。

但是,如果我 return db.test.find({"_id": "1"}) 我确实得到了文件。

有什么区别?

更广泛的问题:我可以在服务器端执行任意 JS 代码吗?

例如,我想检索文档并有一些 if-else 逻辑

db.test.find({"_id": "1"}) returns Promise,并且您不会在 returning 数据之前等待它解决。所以,当你 return doc['_id'] 时,doc 就是 undefined。因此,您应该 return Promise 解析后的值。你可以这样做:

db.test.find({"_id": "1"}).then((document) => {
  return document .id;
})