我正在开发一个在后端使用MongoDB的Meteorjs应用程序。
在我的集合中,有一些对象具有名为parent_id
的公共字段,例如
{name:'A',parent_id:'acd'}
{name:'b',parent_id:'acd'}
{name:'c',parent_id:'acd'}
{name:'d',parent_id:'acd'}
我想通过更改parent_id
字段(例如
{name:'A',parent_id:'acdef'}
{name:'b',parent_id:'acdef'}
{name:'c',parent_id:'acdef'}
{name:'d',parent_id:'acdef'}
这些所有对象都将在这样的数据库中
{name:'A',parent_id:'acd'}
{name:'b',parent_id:'acd'}
{name:'c',parent_id:'acd'}
{name:'d',parent_id:'acd'}
{name:'A',parent_id:'acdef'}
{name:'b',parent_id:'acdef'}
{name:'c',parent_id:'acdef'}
{name:'d',parent_id:'acdef'}
为此我找到了db中包含parent_id的元素:' abc' 项= db.collection.find({PARENT_ID:' ABC&#39)。取() 并使用循环我已经更改了每个项目的parent_id,然后尝试了这个命令
for(i=0;i<items.length;i++){
items[i].parent_id='abcdef';
meteor.collection.insert(item)
}
但它给了我一个错误duplicate for _id
答案 0 :(得分:2)
除非您首先从对象中删除 _id
值,否则它将会出现:
for(i=0;i<items.length;i++){
items[i].parent_id='abcdef';
delete items[i]["_id"];
meteor.collection.insert(item[i])
}
所以删除应该清除它,并且会生成新 _id
。
答案 1 :(得分:1)
当您Collection.find()
文档时,您可以使用字段说明符排除_id
字段。
var items = collection.find({}, {fields: {name: 1, parent_id: 1, _id: 0}).fetch();
然后,当您再次修改并插入这些文档时,它们将是重复的,每个文档都有自己唯一的_id
。