如果我有兩個值的文檔:如何在更換整個文檔時更新mongodb文檔?
{
"name" : "Bob",
"location" "France"
}
再經過一個數組包含「名」,「國家」的文件。我如何確保整個文檔更新,刪除了「位置」?
我不會意識到這兩個文件之間的差異,所以我無法取消特定的字段。我正在尋找一種方法來簡單地用提供的數組替換文檔數據。
如果我有兩個值的文檔:如何在更換整個文檔時更新mongodb文檔?
{
"name" : "Bob",
"location" "France"
}
再經過一個數組包含「名」,「國家」的文件。我如何確保整個文檔更新,刪除了「位置」?
我不會意識到這兩個文件之間的差異,所以我無法取消特定的字段。我正在尋找一種方法來簡單地用提供的數組替換文檔數據。
如果您提供的update
包含您想要的記錄的新文檔,您將替換該文檔。
例如:
db.so.insert({"name":"Bob", "location": "France"})
db.so.update({"name":"Bob", "location": "France"}, {"name":"Roberto", "country":"Italy"})
db.so.find()
{ "_id" : ObjectId(), "name" : "Roberto", "country" : "Italy" }
當然,如果你有文件的_id
,這將是指定的更新(而不是傳回你剛插入像上面的文件)的一個更好的辦法
因此,要完成更新,我需要將原始文檔數組和新文檔數組一起傳遞?我只是傳遞了新的數組,現在才意識到它並沒有刪除不在新數組中的字段。 – sterling 2012-08-06 23:17:46
你只需要識別文件。在上面的例子中,我是通過將原始文檔傳回來的,這個文檔唯一標識了文檔。您可以通過傳遞想要更新的現有文檔的_id來實現。查看關於PHP更新的[documentation](http://www.php.net/manual/en/mongo.updates.php),其中顯示了替換和更新只是修改文檔的一部分的更新之間的區別。 – 2012-08-07 01:13:23
非常感謝您的鏈接。這正是我需要的。 – sterling 2012-08-07 20:07:08
在MongoDB中只有這兩個值的文檔是不可能的 - 它還必須有一個_id字段來唯一標識它。 – 2012-08-07 04:10:05