我一直在查看类似 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/