Mongodb 如何在shell中持久化对mongo的更改?

Mongodb 如何在shell中持久化对mongo的更改?,mongodb,Mongodb,我在mongo shell里找到了一份文件 car = db.cars.findOne(); ...make some changes... car = db.cars.findOne(); results for same document as if no changes had been made it mongodb中的游标上没有保存方法。如何在shell中持久化更改 更新。car文档(第一个被调出的文档)包含一系列以前的驱动程序。我必须删除其中一个元素,

我在mongo shell里找到了一份文件

   car = db.cars.findOne();

  ...make some changes... 

   car = db.cars.findOne();

   results for same document as if no changes had been made it
mongodb中的游标上没有保存方法。如何在shell中持久化更改

更新。car文档(第一个被调出的文档)包含一系列以前的驱动程序。我必须删除其中一个元素,然后保存文档并将其删除

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

]

如果您使用的是Mongodb shell,则需要在collection对象上使用更新文档

例如,如果您首先:

car = db.cars.findOne();
然后,修改
car
实例,只需使用
save
方法更新单个文档()

这将更新
cars
集合中的单个文档

对于更高级的用法,您可以考虑使用其中一个可以直接操作数组作为<代码>更新>代码>的一部分。

< P> <代码> FIDONE()/<代码>方法不返回游标,而是返回文档。您可以使用任何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
    ]
}

您必须详细说明要持久化的更改,因为理想情况下不会在光标上调用save,而是在文档上调用save。否则,请使用“更新”。@SlaterTyranus我用更多细节更新了OP。你能提供一个例子吗?
> 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
    ]
}