我使用MongoDB与PHP在一起。我想获取文档的id,如果它存在,或者插入一个新文档,然后返回插入文档的id。
我的tags
收藏像:
[
{
"_id": "57b4e71b4535e71816816183",
"tag": "tag1"
},
{
"_id": "57b4e71b4535e7181681612b",
"tag": "tag2"
}
]
我想通过标签搜索并获得其id或插入它,如果不存在。你能告诉我怎么做吗?
您可以使用 findAndModify()
更新操作来完成此操作,其中new
和upsert
选项设置为true。new
选项设置为true将返回一个文档,其中包含更新时所做的修改。
如果指定的upsert
选项设置为true, findAndModify()
如果没有文档匹配查询,则创建一个新文档,或者更新一个匹配查询的单个文档。
var doc = { "tag": "tag3" };
var retval = db.tags.findAndModify({
"query": doc,
"update": { "$set": doc },
"new": true,
"upsert": true
});
printjson(retval._id)
等效的PHP 代码如下:
$m = new Mongo;
$col = $m->selectDB("test")->tags;
$doc = array("tag" => "tag3");
$retval = $col->findAndModify(
$doc,
array("$set" => $doc),
null,
array(
"upsert" => true,
"new" => true,
)
);
var_dump($retval);