我有一個playlists
集合。集合中的每個文檔都包含一個entries
字段,即一個數組。如何自動重新排列MongoDB中的數組項目?
如何以原子方式更改播放列表中的entries
的順序? (例如,如果另一個用戶在到$push
新的項目,我想,以確保新的條目$push
版重新排序已經發生之後,才同時試圖)
如果我做了find()
,然後重新排序在PHP中,然後update()
,如果操作不是原子的,我可能會丟失新的$push
ed條目。
這是一個示例播放列表對象:
{
"_id" : "playlist1",
"title" : "Playlist One",
"entries" : [
{
"class" : "song",
"identifier" : "song1"
},
{
"class" : "song",
"identifier" : "song2"
},
{
"class" : "song",
"identifier" : "song3"
}
]
}
編輯:
我想我找到了一個可能的解決方案,使用:
在運行的JavaScript數據庫需要寫入鎖定,這意味着它會阻止其他操作。
(從http://php.net/manual/en/mongodb.execute.php)
我只需要MongoDB服務器上執行代碼(find()
+ reorder()
+ update()
)。
但是,如果您有另一個不涉及「字符串內的代碼」的想法(例如$func = "function() { do_something(); return \"something else\" }"
),請分享它。
謝謝!