php - 如果mongodb中不存在某个键,如何插入文档

标签 php mongodb nosql

我一直在查看类似 mongodb: insert if not exists 的问题,它给出了“更新插入”行为的指针。 但是,我希望仅在未找到某个键​​时创建对象,即

if ( $collection->findOne ( array ('key'=>'the_key') ) == NULL ) {
  $collection->insert ( array ('key' => 'the_key', 'content' => 'the_content' );
} else {
  // else don't touch it, so upsert would not fit.
}

我为此使用 PHP mongodb 驱动程序。 上面的代码只是为了我的目的进行演示。然而缺乏所需的原子性。这应该如何实现?

提前致谢!

最佳答案

由于无论如何您都应该为此键定义唯一索引,因此您也可以使用它来防止多次插入具有此类键的对象。查看索引文档:

http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes

这不是一个很好的解决方案 - 在我看来 - 但如果您不想进行更新或由于某种原因无法进行更新,这是我能想到的唯一的解决方案。请记住,当尝试再次插入具有相同键的对象时,您可能会收到错误,您必须处理该错误。

关于php - 如果mongodb中不存在某个键,如何插入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7954662/

相关文章:

MongoDB:启动期间无法设置套接字

php - 建议的 MongoDB 文档结构

c++ - 新的 C++ Mongo 驱动程序 : how to see type and how to get string value

javascript - 从本地托管网页的坐标获取元素详细信息

javascript - JavaScript 中的加密和 PHP 中的解密

ruby - 我可以继续使用 MongoDB v2.2.0rc 使用 1.6.4 Ruby 驱动程序吗?

MongoDB - sort() 数据过多,没有索引错误

python - 将 ORM 与 NoSQL 存储一起使用的不良做法?

PHP数据提交错误

php - Android 应用程序并登录我的数据库