下面是我的收藏:
db.himtest.find({name:"himanshu"})
{ "_id" : ObjectId("56f1667611c54cf649076577"), "name" : "himanshu", "age" : 45,
"points" : 10 }
{ "_id" : ObjectId("56f1667c11c54cf649076578"), "name" : "himanshu", "age" : 35,
"points" : 10 }
{ "_id" : ObjectId("56f1669511c54cf64907657b"), "name" : "himanshu", "age" : 35,
"points" : 1100 }
{ "_id" : ObjectId("56f1669a11c54cf64907657c"), "name" : "himanshu", "age" : 35,
"points" : 11000 }
{ "_id" : ObjectId("56f1669d11c54cf64907657d"), "name" : "himanshu", "age" : 45,
"points" : 11000 }
{ "_id" : ObjectId("56f166a311c54cf64907657e"), "name" : "himanshu", "age" : 45,
"points" : 1200 }
现在我想根据任何选择标准更新最后一行,例如:
db.himtest.find({name:"himanshu",age:45}).sort({_id:-1}).limit(1).update({points:100});
答案 0 :(得分:1)
您可以使用findAndModify
执行此操作,这样您就可以使用排序规范来标识要更新的匹配文档:
db.himtest.findAndModify({
query: {name: "himanshu", age: 45},
sort: {_id: -1},
update: {$set: {points: 100}},
new: true
})
如果您使用的是v3.2或更高版本,也可以使用findOneAndUpdate
:
db.himtest.findOneAndUpdate(
{name: "himanshu", age: 45},
{$set: {points: 100}},
{
sort: {_id: -1},
returnNewDocument: true
})
答案 1 :(得分:0)
你会想要做这样的事情。
db.himtest.find({name:"himanshu",age:45}).
sort({id:-1}).
limit(1).
forEach(function(e){
e.points = 100
db.himtest.save(e)
})
不确定您是否使用像mongoose或mongodb shell这样的东西。如果你指定我可以测试以确保答案可行。