如何在MongoDB中更新精确的数组元素?
您可以使用以下语句在MongoDB中更新精确的数组元素。语法如下:
{"yourArrayDocumentName.$.yourNestedArrayDocument.yourPosition":"yourValue"}});为了理解上述语法,让我们创建一个包含一些文档的集合。创建包含文档的集合的查询如下:
> db.updateExactField.insertOne({"ActorId":1,"ActorDetails":[{"ActorName":"Johnny Depp","MovieList":
["The Tourist","Public Enemy"]},
... {"ActorName":"Chris Evans","MovieList":["Captain America","Avengers"]}]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6d7f63f2db199c1278e7f1")
}现在,您可以使用find()方法显示集合中的文档。查询如下:
> db.updateExactField.find().pretty();
输出如下:
{
"_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),
"ActorId" : 1,
"ActorDetails" : [
{
"ActorName" : "Johnny Depp",
"MovieList" : [
"The Tourist",
"Public Enemy"
]
},
{
"ActorName" : "Chris Evans",
"MovieList" : [
"Captain America",
"Avengers"
]
}
]
}案例1:在这里,更新精确的数组元素,即第3个位置,因为数组从0开始,所以索引为2。查询如下:
> db.updateExactField.update(
... {"ActorDetails.ActorName":"Chris Evans"},
... {$set:
... {"ActorDetails.$.MovieList.2":"Avengers:Infinity War"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })让我们使用find()方法显示集合中的文档。查询如下:
> db.updateExactField.find().pretty();
输出如下:
{
"_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),
"ActorId" : 1,
"ActorDetails" : [
{
"ActorName" : "Johnny Depp",
"MovieList" : [
"The Tourist",
"Public Enemy"
]
},
{
"ActorName" : "Chris Evans",
"MovieList" : [
"Captain America",
"Avengers",
"Avengers:Infinity War"
]
}
]
}查看上面的输出,值“Avengers:Infinite War”位于第3个位置,即索引2。
案例2:现在让我们更新索引1,即第2个位置。查询如下:
> db.updateExactField.update( {"ActorDetails.ActorName":"Chris Evans"}, {$set:
{"ActorDetails.$.MovieList.1":"Gifted"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })让我们使用find()方法检查集合中的文档。查询如下:
> db.updateExactField.find().pretty();
输出如下:
{
"_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),
"ActorId" : 1,
"ActorDetails" : [
{
"ActorName" : "Johnny Depp",
"MovieList" : [
"The Tourist",
"Public Enemy"
]
},
{
"ActorName" : "Chris Evans",
"MovieList" : [
"Captain America",
"Gifted",
"Avengers:Infinity War"
]
}
]
}查看上面的示例输出,值“Gifted”位于第2个位置,即索引1。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP