level 13
AskMaclean
楼主
MongoDB 如何更新数组里面的一组对象的属性?
MongoDB 如何更新数组里面的一组对象的属性?
dbDao 百度贴吧:https://tieba.baidu.com/dbdao
MongoDB技术学习QQ群: 421431253
如下面的例子
语法如下:
db.collection.update(
{ },
{ : { "array.$.field" : value } }
)
db.students.insert ({
_id: 4,
grades: [
{ grade: 80, mean: 75, std: 8 },
{ grade: 85, mean: 90, std: 5 },
{ grade: 90, mean: 85, std: 3 }
]
})
db.students.update(
{ _id: 4, "grades.grade": 85 },
{ $set: { "grades.$.std" : 6 } }
)
> db.students.insert ({
... _id: 4,
... grades: [
... { grade: 80, mean: 75, std: 8 },
... { grade: 85, mean: 90, std: 5 },
... { grade: 90, mean: 85, std: 3 }
... ]
... })
WriteResult({ "nInserted" : 1 })
>
>
> db.students.update(
... { _id: 4, "grades.grade": 85 },
... { $set: { "grades.$.std" : 6 } }
... )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
> db.students.find();
{ "_id" : 4, "grades" : [ { "grade" : 80, "mean" : 75, "std" : 8 }, { "grade" : 85, "mean" : 90, "std" : 6 }, { "grade" : 90, "mean" : 85, "std" : 3 } ] }
>
>
>
> db.students.find().pretty();
{
"_id" : 4,
"grades" : [
{
"grade" : 80,
"mean" : 75,
"std" : 8
},
{
"grade" : 85,
"mean" : 90,
"std" : 6
},
{
"grade" : 90,
"mean" : 85,
"std" : 3
}
]
}
若要多个filed 匹配则使用
db.students.update(
{
_id: 4,
grades: { $elemMatch: { grade: { $lte: 90 }, mean: { $gt: 80 } } }
},
{ $set: { "grades.$.std" : 6 } }
)
2015年06月04日 14点06分
1
MongoDB 如何更新数组里面的一组对象的属性?
dbDao 百度贴吧:https://tieba.baidu.com/dbdao
MongoDB技术学习QQ群: 421431253
如下面的例子
语法如下:
db.collection.update(
{ },
{ : { "array.$.field" : value } }
)
db.students.insert ({
_id: 4,
grades: [
{ grade: 80, mean: 75, std: 8 },
{ grade: 85, mean: 90, std: 5 },
{ grade: 90, mean: 85, std: 3 }
]
})
db.students.update(
{ _id: 4, "grades.grade": 85 },
{ $set: { "grades.$.std" : 6 } }
)
> db.students.insert ({
... _id: 4,
... grades: [
... { grade: 80, mean: 75, std: 8 },
... { grade: 85, mean: 90, std: 5 },
... { grade: 90, mean: 85, std: 3 }
... ]
... })
WriteResult({ "nInserted" : 1 })
>
>
> db.students.update(
... { _id: 4, "grades.grade": 85 },
... { $set: { "grades.$.std" : 6 } }
... )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
> db.students.find();
{ "_id" : 4, "grades" : [ { "grade" : 80, "mean" : 75, "std" : 8 }, { "grade" : 85, "mean" : 90, "std" : 6 }, { "grade" : 90, "mean" : 85, "std" : 3 } ] }
>
>
>
> db.students.find().pretty();
{
"_id" : 4,
"grades" : [
{
"grade" : 80,
"mean" : 75,
"std" : 8
},
{
"grade" : 85,
"mean" : 90,
"std" : 6
},
{
"grade" : 90,
"mean" : 85,
"std" : 3
}
]
}
若要多个filed 匹配则使用
db.students.update(
{
_id: 4,
grades: { $elemMatch: { grade: { $lte: 90 }, mean: { $gt: 80 } } }
},
{ $set: { "grades.$.std" : 6 } }
)