Аналог insert ignore в MongoDb

Василий М.

Новичок
Сабж. Не могу понять. Как сделать так, что бы при вставке записи с дублирующимися ключами срабатывал бы insert ignore?
 

Василий М.

Новичок
Спасибо, видел, но то ли лыжи не едут, то ли я дурак.
Используем ActiveMongo обертку.
Там есть код вставки:
PHP:
 $conn->insert($document, array('safe' => $async));
дописал:
PHP:
 $conn->insert($document, array('safe' => $async, 'upsert' => true));
и в документ $document пытаюсь добавить ключ $set со значением
PHP:
array('time' => new \MongoTimestamp());
все равно не работает.
Говорит, что
document to insert can't have $ fields
Что я не так делаю??
 

ksnk

прохожий
Я не нашел использования upsert в этом тексте. Учитывая, что он писался в 2010 году - его просто могло не быть в той монге, которая была 3 года назад.
Я пользовался "оффициальным" драйвером. В процессе работы, вроде, не возникало желания завести еще и что-то свое, так что можно посоветовать отказаться от лишних оберток.
 

Василий М.

Новичок
все равно не получается. делаю как в доках написано:

PHP:
		$client = new \MongoClient(MONGO_DB);
		$users = $client->users;
		$last_views = $users->createCollection('last_views', 1, 1024, 10);
		$last_views->ensureIndex(array("user_id" => 1, "warecode" => 1), array("unique" => 1));
		
		$uviews = new \stdClass();
		$uviews->user_id = $this->user_id;
		$uviews->warecode = $this->warecode;
		$uviews->lasttime = new \MongoTimestamp();

		$res = $users->last_views->update(
			$uviews, 
			array('$set' => array('lasttime' => new \MongoTimestamp())),
			array('upsert' => true)
		);
mongodbserver:27017: duplicate key insert for unique index of capped collection
 
Сверху