我有一个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\" }"
),请分享它。
谢谢!