如何坚持改变shell中的mongo?

时间:2013-09-01 19:42:46

标签: 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?

更新。汽车文件(第一个被拉起)有一系列先前的驱动程序。我必须删除其中一个元素并保存文档并删除它。

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

]

2 个答案:

答案 0 :(得分:3)

如果您正在使用Mongodb shell,则需要使用集合对象上的methods来更新文档。

例如,如果你是第一个:

car = db.cars.findOne();

然后,修改car实例,您只需使用save方法更新单个文档(save documentation)。

db.cars.save(car);

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

对于更高级的用法,您可以考虑使用Array operators之一,它可以直接操作数组作为update的一部分。

答案 1 :(得分: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
    ]
}