0

Mongo Db の更新クエリを実行しようとしています。私はphpを使用し、更新される値を送信します。ミリ秒単位で日付パラメーターを送信します。しかし、うまくいきませんでした。コードは次のとおりです。

    function updateEventById($id1,$start,$end,$collection)
{
    $this->collection = $this->database->$collection;

    //$start=new MongoDate($start);

    //$end=new MongoDate($end);

    $newdata = array('$set' => array("start.sec" => $start,
                "end.sec" =>  $end ));

    $theObjId = new MongoId($id1["\$id"]);
    $this->collection->update(array("_id" => $theObjId), $newdata);

}
4

2 に答える 2

0

Mongo Shell を使用してあなたのケースを試してみましたが、問題なく動作します。

> db.col.insert({start: {sec: new Date()}, end: {sec: new Date()}})
> db.col.find()
{ "_id" : ObjectId("50db7b136db4ad2bff518a03"), "start" : { "sec" : ISODate("201
2-12-26T22:32:51.098Z") }, "end" : { "sec" : ISODate("2012-12-26T22:32:51.098Z")
 } }
> db.col.update({_id: ObjectId("50db7b136db4ad2bff518a03")}, {$set: {"start.sec"
: new Date(), "end.sec": new Date()}})
> db.col.find()
{ "_id" : ObjectId("50db7b136db4ad2bff518a03"), "start" : { "sec" : ISODate("201
2-12-26T22:33:33.725Z") }, "end" : { "sec" : ISODate("2012-12-26T22:33:33.725Z")
 } }
>

プロパティを呼び出すのではなく、MongoDB インスタンスから selectCollection 関数を使用する必要があると思います (PyMongo が機能するため、 and を拡張__getitem____getattr__ます)。

$this->database->selectCollection($collection)->update(array("_id" => $theObjId), $newdata);

「コレクション」プロパティクラスは、別のコレクションで更新を実行する前に値を変更する可能性があるため、コードをデバッグする必要がある可能性があります。

MongoClient クラスを使用している場合は、WriteConcern の結果を参照してください。

于 2012-12-26T22:53:09.337 に答える