你好,我有这个文件
{
email: "email@gmail.com",
list: [
{
"product": "Car",
"price": 18
},
{
"product": "Boat",
"price": 20
}
]
}
我想知道如何使用email
参数识别文档,并通过查找带有“Car”参数的产品并使用MongoDB Java驱动程序将价格更新为15来更新列表
参数中的特定对象。
谢谢你
有两种方法可以根据条件更新数组字段的嵌套文档。
(1) 使用位置$Operator进行更新:
positional$操作符充当与查询文档匹配的第一个元素的占位符,数组字段必须作为查询文档的一部分出现;i、 例如,“list.product”:“Car”
。其次,只更新第一个匹配的数组元素。
db.collection.updateOne(
{ email: "email@gmail.com", "list.product": "Car" },
{ $set: { "list.$.price": 15 } }
)
(2) 使用筛选的位置$[identifier]运算符更新:
过滤后的位置运算符$[identifier]标识与更新操作的arrayFilters
条件匹配的数组元素。
注意:使用$[identifier]
update操作符时,数组字段上的条件不是必需的。其次,所有匹配的数组元素(“product”:“Car”
)都将更新。
db.collection.updateOne(
{ email: "email@gmail.com" },
{ $set: { "list.$[ele].price": 15 } },
{ arrayFilters: [ { "ele.product": "Car" } ] }
)
使用MongoDBJava驱动更新:
案例一:
Bson filter = and(eq("email", "email@gmail.com"), eq("list.product", "Car"));
Bson update = set("list.$.price", 15);
UpdateResult result = coll.updateOne(filter, update);
案例2:
Bson filter = eq("email", "email@gmail.com");
UpdateOptions options = new UpdateOptions()
.arrayFilters(asList(eq("ele.product", "Car")));
Bson update = set("list.$[ele].price", 15);
UpdateResult result = coll.updateOne(filter, update, options);
参考:MongoDB Java驱动程序
我的目标是使用聚合框架创建一个管道来对我的数据进行分组,然后将这个管道与java驱动程序一起使用。MongoDB v4.0.3 我使用MongoDB Compass创建了以下管道(减少到重要部分): 这导致以下(生成的)Java代码: 集合中$组阶段之前的数据如下所示: $组阶段应返回以下数据结构: 问题所在 Mongo Compass按预期预览了阶段的结果,但使用java驱动程序的阶段的结果非常
问题内容: 我目前正在尝试使用Firestore,但遇到了非常简单的问题:“更新数组(又称子文档)”。 我的数据库结构非常简单。例如: 我正在尝试(没有成功)将新记录推入对象数组。 我试过了: 没有效果。这些查询将覆盖我的数组。 答案可能很简单,但我找不到它… 问题答案: 当前无法在Cloud Firestore中更新单个数组元素(或添加/删除单个元素)。 这段代码在这里: 这是说,在设置文件,使
问题内容: 参考文献: http://www.mongodb.org/display/DOCS/Java+Tutorial 对于mongo db来说还算是新手,但是我正在尝试更新集合中现有文档的一部分…不幸的是,上面的链接没有更新示例。 本质上,我只希望能够: 向文档添加新字段 将文档的现有字段更新为新值 这是我的代码(Grails + Groovy + Java + MongoDB + Java
问题内容: 您好,我想将chrome驱动程序更新到最新版本,但ant会找到有关更新驱动程序的任何信息,只是有关安装它的信息。我需要怎么做才能将驱动程序更新到最新版本? 问题答案: chromedriver是一个独立的可执行文件。只需将您的现有版本替换为较新的版本即可。 从https://sites.google.com/a/chromium.org/chromedriver/downloads下载
如何更新数组元素子文档中的特定字段? 我的问题类似于下面的问题,但是在我的例子中,我只需要更新一个子文档值。 MongoDB:如何更新数组中由数组中的索引引用的单个子元素? 我有以下文档模型: 所以,在mongodb shell中,以下语句非常适合我: 然而,当我尝试使用MongoJava驱动程序时,我会得到一个IllegalArgumentException。 它会引发以下异常: 我的代码有问题
在Selenium PageObjects中,我没有实例化任何web驱动程序实例,也没有如下所示进行编码 我试图在Selenium Page对象函数中实现以下代码。 有谁能建议我,在使用页面对象模型时,如何在上述代码中使用webdriver实例?