【发布时间】:2021-04-19 09:43:27
【问题描述】:
我有 2 个 mongo 集合:admins 和 logs
“管理员”集合文档如下所示:
{
_id: ObjectId("123456"),
name: "John Doe",
age: 33
}
我想通过一个查询向“日志”集合中插入一个新文档,如下所示:
{
_id: ObjectId("778899"),
action: "did something",
adminUserId: "123456" // just a plain string value, not ObjectId
}
所以我真正要问的是如何插入文档,其中字段值等于“内部选择语句”值, 即-
adminUserId = ([select one from collection 'admins' where name="John Doe"]._id.toString())
有什么方法可以在一个 mongo 操作中完成所有操作?我在 node.js 中
【问题讨论】:
-
它需要 2 次查询,第一次从管理员那里找到,第二次添加日志。
-
是的,已经这样做了。我很好奇这种操作是否可以“折叠”到一个查询中,而且——如果这种查询比 1.fetch->2.insert 的简单方法更有效
-
我不认为有任何折叠查询可以做到这一点,你真的需要改变模式设计从另一个集合查询数据并插入另一个集合是不好的,或者你为什么不获取_id而不是name,可以保存一个查询。
标签: node.js mongodb mongoose mongodb-query aggregation-framework