1
我有两个日期字段:DATE_START和DATE_END更新UPSERT:DATE_START场
$criteria = [
'_id'=>$data->thread,
'download_id'=>$data->id,
'ip'=>new MongoInt32(Helper::aton($data->remote_addr)),
];
$status = $nodeThreadsCollection->update($criteria,
[
'$set'=>[
'disconnected'=>(bool)$data->disconnected,
'date_end'=>new MongoDate(),
],
'$inc'=>[
'bytes_send'=>new MongoInt64($data->bytes_send),
]
],[
'upsert'=>true,
'w'=>1,
]
);
if(isset($status['updatedExisting']) && !$status['updatedExisting']) {
$nodeThreadsCollection->update($criteria,
[
'$set'=>[
'date_start'=>new MongoDate(),
],
],[
'w'=>0,
]
);
}
但它需要writeConcern = 1用于获取插入状态并进行二次查询。 如何在一个查询中创建它?
嗯没有办法有条件根据MongoDB本身中另一部分查询的结果编写date_start,因此我认为两个查询是你必须做的,除非当然可以设置date_start,只要 – Sammaye
啊等待你想要一个$ setOnInsert:http: //docs.mongodb.org/manual/refere nce/operator/update/setOnInsert /我相信 – Sammaye
谢谢,不要期待在这里见到你;) – Hett