如果我们尝试插入类似的记录,则该记录不应该是 插入而不是需要更新
这是我的查询
db.cos.insert({'subject':'A','batch': '2004','section':'A','cos':[{'code':1,'desc': '1 d','pos': {'po1': 3,'po2': 3.5,'po3': 0,'po4': 2,'po5': 3}}] });
执行此查询后,如果我尝试执行,则会插入一个数据 这个查询再次,它不应该被保存而不是它应该 更新
答案 0 :(得分:0)
您需要文档的唯一ID,然后才能使用db.cos.save(yourDocument)
进行更新。
https://docs.mongodb.com/manual/reference/method/db.collection.save/
如果您没有提供唯一ID,或者找不到提供的密钥,则会创建一个新文档。
db.cos.save({
_id: 'hello',
data: 'world'
});
// a new document will be created:
// {_id: 'hello', data: 'world'}
db.cos.save({
_id: 'hello',
data: 'world 2'
});
// the same document will be updated:
// {_id: 'hello', data: 'world2'}
db.cos.save({
_id: 'hello2',
data: 'world'
});
// another document will be created:
// {_id: 'hello', data: 'world2'}
// {_id: 'hello2', data: 'world'}
db.cos.save({
data: 'world3'
});
// another document will be created:
// {_id: 'hello', data: 'world2'}
// {_id: 'hello2', data: 'world'}
// {_id: ObjectID(1), data: 'world'}
答案 1 :(得分:0)
使用{upsert:true}
db.cos.update({someQueryToFindDocument}, {'subject':'A','batch': '2004','section':'A','cos':[{'code':1,'desc': '1 d','pos': {'po1': 3,'po2': 3.5,'po3': 0,'po4': 2,'po5': 3}}] }, {upsert:true});
如果根据cos集合中的查询没有匹配文档,那么它将插入,否则它将更新。