3

mongo シェルでドキュメントを取得しました

   car = db.cars.findOne();

  ...make some changes... 

   car = db.cars.findOne();

   results for same document as if no changes had been made it

mongodb のカーソルには保存メソッドがありません。シェルで変更を永続化するにはどうすればよいですか?

アップデート。車のドキュメント (プルアップされた最初のもの) には、以前のドライバーの配列があります。要素の 1 つを削除し、それを削除してドキュメントを保存する必要があります。

"previousdrivers" : [
    {
        "year" : "2011",
        "name" : Mr. Zed"
    },
    {
        "year" : "2012",
        "name" : "Mr. Bean"
    },
    {
        "year" : "2013",
        "name" : "Mr. Smith"
    }

]
4

2 に答える 2

3

Mongodb シェルを使用している場合は、コレクション オブジェクトのメソッドを使用してドキュメントを更新する必要があります。

たとえば、最初に次のことを行うとします。

car = db.cars.findOne();

次に、carインスタンスを変更します。saveメソッドを使用して、単一のドキュメントを更新できます (ドキュメントを保存)。

db.cars.save(car);

これにより、コレクション内の単一のドキュメントが更新されcarsます。

より高度な使用法として、配列を の一部として直接操作できるArray 演算子の 1 つを使用することを検討してくださいupdate

于 2013-09-01T20:06:27.593 に答える
2

このfindOne()メソッドはカーソルではなくドキュメントを返します。任意の JavaScript メソッドを使用して配列を操作できます。完了したらsave()、そのドキュメントを呼び出すことができます。例

> db.cars.save({make : "ford", gears : [1,2,3,4,5]})
> var doc = db.cars.findOne()
> doc.gears.pop()
5
> db.cars.save(doc)
> db.cars.findOne()
{
    "_id" : ObjectId("52239e729a713e4fbc425ed1"),
    "make" : "ford",
    "gears" : [
            1,
            2,
            3,
            4
    ]
}
于 2013-09-01T20:11:41.783 に答える