【发布时间】:2021-06-28 03:33:17
【问题描述】:
我有一个带有嵌套属性的集合,它是一个 ObjectId 引用数组。这些是指另一个集合中的文档。
我想将这些引用替换为文档本身,即将这些文档嵌入到引用所在的位置。我尝试过使用和不使用 .snapshot() 选项。这可能是因为我在该文档的循环中更新文档,而 .snapshot() 在该级别不可用。
我的 mongo-fu 很低,我遇到了调用堆栈错误。我该怎么做?
示例代码:
db.CollWithReferences.find({}).snapshot().forEach( function(document) {
var doc_id = document._id;
document.GroupsOfStuff.forEach( function(Group) {
var docsToEmbed= db.CollOfThingsToEmbed.find({ _id: { $in: Group.ArrayOfReferenceObjectIds }});
db.CollWithReferences.update({"_id": ObjectId(doc_id) },
{$set: {"Group.ArrayOfReferenceObjectIds ":docsToEmbed}} )
});
});
给出这个错误:
{
"message" : "Maximum call stack size exceeded",
"stack" : "RangeError: Maximum call stack size exceeded" +
....}
【问题讨论】:
标签: mongodb mongodb-query