如何插入一个文档,如果某些关键不存在于mongodb


How to insert a document if certain key not exists in mongodb

我一直在看像mongodb这样的问题:插入如果不存在,它给出了指向"upsert"行为的指针。但是,我希望只在没有找到某个键时创建对象,即

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

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