db.collectionX.save和db.collectionX.insert之间的区别

q09*_*987 5 mongodb

> itemsA = { attrA : "vA", attrB : "vB" }
{ "attrA" : "vA", "attrB" : "vB" }
> db.collectionA.insert(itemsA)
> db.collectionA.find()
{ "_id" : ObjectId("4e85de174808245ad59cc83f"), "attrA" : "vA", "attrB" : "vB" }
> itemsA
{ "attrA" : "vA", "attrB" : "vB" }


> itemsB = { attrC : "vC", attrD : "vD" }
{ "attrC" : "vC", "attrD" : "vD" }
> db.collectionB.save(itemsB)
> db.collectionB.find()
{ "_id" : ObjectId("4e85de474808245ad59cc840"), "attrC" : "vC", "attrD" : "vD" }
> itemsB
{
    "attrC" : "vC",
    "attrD" : "vD",
    "_id" : ObjectId("4e85de474808245ad59cc840")
}
Run Code Online (Sandbox Code Playgroud)

这是我的观察:

插入到collectionA后,itemsA的值不会被修改.

相比之下,在存储到collectionB之后,itemB的值被更改了!

是否有任何规则可以指导这些修改,以便我知道在将值插入或保存到集合中之后应该注意什么?

谢谢

Bla*_*dow 2

对于保存,如果您提供_id,它将更新。如果不这样做,它就会插入,这就是差异。