
[英]MongoDB in PHP - How do I insert items into an array in a collection?
[英]How can I atomically reorder array items in MongoDB?
我有一个playlists
集合。 集合中的每个文档都包含一个entries
字段,即一个数组。
如何自动更改播放列表中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"
}
]
}
编辑:
我想我找到了一个可能的解决方案,使用execute()
:
在数据库中运行JavaScript需要写锁定,这意味着它会阻止其他操作。
(来自http://php.net/manual/en/mongodb.execute.php )
我只需要在MongoDB服务器上执行代码( find()
+ reorder()
+ update()
)。
不过,如果您还有其他想法不涉及“字符串中的代码”(例如$func = "function() { do_something(); return \\"something else\\" }"
)),请分享一下。
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.