我在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"
}
]
答案 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
]
}