Javascript 如何保存Mongo文档';在嵌套字段中有自己的\u id吗?
此Meteor服务器代码尝试将新创建的属性Javascript 如何保存Mongo文档';在嵌套字段中有自己的\u id吗?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,此Meteor服务器代码尝试将新创建的属性\u id复制到子文档中,但失败 怎样才能做到呢 编辑: 代码使用matb33:collection hook MyCollection.after.insert(function(userId, doc) { if (doc.element === 'myString') { doc.values[0]._id = doc._id; } }); 在matb33:collection hooks的after钩子中对doc进行变异不会导致
\u id
复制到子文档中,但失败
怎样才能做到呢
编辑:代码使用
matb33:collection hook
MyCollection.after.insert(function(userId, doc) {
if (doc.element === 'myString') {
doc.values[0]._id = doc._id;
}
});
在
matb33:collection hooks
的after
钩子中对doc
进行变异不会导致运行额外的查询。如果希望,您需要显式地更新文档
但是,在这种特殊情况下,如果您确实需要文档中重复的\u id
,则可以生成\u id
,并在插入文档时指定它
您可能可以使用MyCollection.\u makeNewID()
方法,因为此API已经有几年没有更改了,并且它是Mongo
包内部使用的
const _id = MyCollection._makeNewID();
const doc = {
_id,
values: [
{
_id,
...
}, {
...
}
]
};
MyCollection.insert(doc);
在matb33:collection hooks
的after
钩子中对doc
进行变异不会导致运行额外的查询。如果希望,您需要显式地更新文档
但是,在这种特殊情况下,如果您确实需要文档中重复的\u id
,则可以生成\u id
,并在插入文档时指定它
您可能可以使用MyCollection.\u makeNewID()
方法,因为此API已经有几年没有更改了,并且它是Mongo
包内部使用的
const _id = MyCollection._makeNewID();
const doc = {
_id,
values: [
{
_id,
...
}, {
...
}
]
};
MyCollection.insert(doc);
“你是在用类似的东西吗?”AnthonyAstige是的。发布更新。为什么不在插入文档时生成\u id
?这将消除运行这些额外查询的需要。@MasterAM great idea,以前从未尝试过,它是否必须存在于此集合中插入的所有文档中,或者只能用于此插入?是否使用类似于?AnthonyAstige Yes。发布更新。为什么不在插入文档时生成\u id
?这将消除运行这些额外查询的需要。@MasterAM great idea,以前从未尝试过,它是否必须存在于插入此集合的所有文档中,或者只能用于此插入?