7

我想在文档已经存在时替换它,如果不希望插入它。我怎么能在 mongoDb 中做到这一点?

我需要这样的东西,但在一个查询中:

find by a "where statement"
if exists, replace whole document
else, insert

谢谢!

4

2 回答 2

5

您也可以使用保存操作,这比更新快得多(从我的测试中快 x70),并且适合您的目的,但以防万一记得输入整个文档

于 2013-12-09T14:13:33.603 回答
1

使用集合更新。

在下面的示例中,第一个更新调用将“插入或替换”文档(包括查询中的名称字段)。在第二个更新调用将插入文档或只是更新乔的工作,保持文档的其余部分完好无损。不同之处在于“$set”操作。

<?php

$c->update(
    array("name" => "joe"),
    array("username" => "joe312", "job" => "Codemonkey"), 
    array("upsert" => true));

$c->update(
    array("name" => "joe"),
    array("$set" => array("job" => "Bartender")), 
    array("upsert" => true));

?>
于 2013-11-06T14:29:11.790 回答