Php 如果mongodb中不存在某个密钥,如何插入文档

Php 如果mongodb中不存在某个密钥,如何插入文档,php,mongodb,nosql,Php,Mongodb,Nosql,我一直在研究这样的问题,它为“向上插入”行为提供了指针。 然而,我只希望在找不到某个键的情况下创建对象,即 if ( $collection->findOne ( array ('key'=>'the_key') ) == NULL ) { $collection->insert ( array ('key' => 'the_key', 'content' => 'the_content' ); } else { // else don't touch it

我一直在研究这样的问题,它为“向上插入”行为提供了指针。 然而,我只希望在找不到某个键的情况下创建对象,即

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驱动程序。 上面的代码只是我的演示。然而,它缺乏所需的原子性。这应该如何实现


提前谢谢

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


这不是一个很好的解决方案——imo——但如果您不想进行更新或者出于任何原因无法进行更新,那么这是我唯一能想到的解决方案。请记住,当您再次尝试插入具有相同键的对象时,可能会收到一个错误,您必须对此进行处理。

存储具有相同索引值的文档将更改文档。但是,如果我不想存储一个文档,如果某个条件是真的,比如“如果文档X存在并且其属性y=abc,则不存储文档X”,该怎么办?