- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 mongoDb 中的嵌入字段数组中删除一个项目。数组是一种字符串类型,如下所示。
{
_id: 1,
fruits: [ "apples", "pears", "oranges", "grapes", "bananas" ],
vegetables: [ "carrots", "celery", "squash", "carrots" ]
}
{
_id: 2,
fruits: [ "plums", "kiwis", "oranges", "bananas", "apples" ],
vegetables: [ "broccoli", "zucchini", "carrots", "onions" ]
}
我只是想从嵌入的阵列蔬菜中取出胡萝卜。使用 mongo shell,以下查询有效
db.stores.update(
{ },
{ $pull: { vegetables: "carrots" },
{ multi: true }
)
现在我需要在 Spring 使用 mongoTemplate 来执行此操作,我尝试了下面的答案,但它不会删除该元素 MongoTemplate pull subdocument 。任何人都可以建议我如何在 spring 项目中使用 mongoTemplate 来实现这一目标
最佳答案
您可以简单地使用以下查询来提取 vegetables
对象数组中的任何字符串:
mongoTemplate.updateMulti(new Query(), new Update().pull("vegetables", "squash"), "stores");
在上面的查询中,squash将在执行后被拉出。有关详细信息,我还在上述查询之后和之前添加了对 stores
集合的查找查询,如下所示:
List<Stores> storesList = mongoTemplate.find(new Query(), Stores.class);
for(Stores stores : storesList) {
System.out.println(stores.toString());
}
mongoTemplate.updateMulti(new Query(), new Update().pull("vegetables", "squash"), "stores");
List<Stores> afterModificationStoresList = mongoTemplate.find(new Query(), Stores.class);
for(Stores stores : afterModificationStoresList) {
System.out.println(stores.toString());
}
输出如下:
2019-11-26 10:19:57.947 DEBUG 7321 --- [ main] o.s.data.mongodb.core.MongoTemplate : find using query: { } fields: Document{{}} for class: class sample.data.mongo.models.Stores in collection: stores
Stores{id='1.0', fruits=[apples, pears, oranges, grapes, bananas], vegetables=[celery, squash]}
Stores{id='2.0', fruits=[plums, kiwis, oranges, bananas, apples], vegetables=[broccoli, zucchini, onions]}
2019-11-26 10:19:57.975 DEBUG 7321 --- [ main] o.s.data.mongodb.core.MongoTemplate : Calling update using query: { } and update: { "$pull" : { "vegetables" : "squash" } } in collection: stores
2019-11-26 10:19:57.985 DEBUG 7321 --- [ main] o.s.data.mongodb.core.MongoTemplate : find using query: { } fields: Document{{}} for class: class sample.data.mongo.models.Stores in collection: stores
Stores{id='1.0', fruits=[apples, pears, oranges, grapes, bananas], vegetables=[celery]}
Stores{id='2.0', fruits=[plums, kiwis, oranges, bananas, apples], vegetables=[broccoli, zucchini, onions]}
有关代码详细信息,请访问 Github 存储库:https://github.com/krishnaiitd/learningJava/blob/master/spring-boot-sample-data-mongodb/src/main/java/sample/data/mongo/main/Application.java#L126
关于java - MongoTemplate 拉取查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59034265/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我已经在 Spring Boot 中配置了 MongoDB 连接。现在我想使用 MongoTemplate find() 方法运行自定义查询。但 Spring Boot 不允许我这样做。 @Autow
从 1.9.0.RELEASE 开始,spring-data-mongodb 支持批量更新。 BulkOperations ops = template.bulkOps(BulkMode.UNORDE
我有一个名为 collection_One 的集合.我想重命名集合,但失败了。 mongotemplate给我看了: executing the 'renameCollection' command
MongoTemplate 不返回结果。 JSON: { "_id" : ObjectId("51acf6ab0d5d46077ae12b2a"), "docType" : "row",
我正在使用 MongoTemplate 来执行我的 Mongo 查询。我想知道计数是否适用于限制集? 尽管设置了限制,为什么查找查询会搜索完整集合(根据查询)?例如我写的查询可能会产生 10000 条
我正在尝试使用 MongoTemplate 和聚合框架在 Spring Boot 项目中运行聚合管道。 我的查询执行时没有任何异常。但是,当我尝试在 AggregationResults 实例上调用
我正在尝试从 mongoDb 中的嵌入字段数组中删除一个项目。数组是一种字符串类型,如下所示。 { _id: 1, fruits: [ "apples", "pears", "orange
对于 Upsert MongoTemplate 提供了一种按以下方式使用的方法。 但是,它只会设置名称。如果我想插入与新用户对象关联的所有键该怎么办?即除了姓名之外,我还想插入电子邮件和许多其他值。我
我需要在 MongoTemplate 中提取子文档,但不知道该怎么做。 我保存的文档是: { "_id" : "FooUser", "_class" : "com.domain.Use
我需要编写一个查询,它可以查找数据库中子数组大小大于某值的对象。 我的对象看起来像: { "_id" : ObjectId("sbg8732god78"), "studentIds"
我有一个端点,它接受文档 ID,以及我想要更新的嵌套数组中的 Employee 对象。这工作正常。我尝试修改端点以获取超过 1 名员工并让它一次更新所有员工,但我无法让它工作。我不确定我是否格式错误,
我想创建一个 DAO,将用户保存到我的数据库中。他们应该有唯一的登录名,这有点问题,因为 mongo db 没有事务。我有一个类,其中的用户如下所示: @Document(collection = "
我正在尝试转换以下查询: { "cd" : { "$lte" : ISODate("2013-06-30T09:12:29Z") , "$gte" : ISODate("2013-06-11T09:1
我的以下 mongodb 查询按预期工作 db.importedDataItems.aggregate({ $match: { mobile: "1234567890"
我正在根据多个参数生成一个复杂的 Mongo 查询。我想用 Criteria 辅助类制定的标准之一是: {"field1": {$exists: true, $ne: false}} 我试着用: Cr
在我们的应用程序中,我们管理许多 MongoTemplate 实例,每个实例代表一个客户端数据库。对于大多数数据库操作,我们希望使用 secondaryPreferred 读取首选项,以便利用集群的只
我在 MongoDB 中有像这样的 JSON 文档 { "os" : "Windows 10" } { "os" : "WINDOWS 8" } { "os" : "UBunTu 18.0
我正在使用 MongoTemplate 进行我的数据库操作。现在我想从所选结果中获取最大字段值。有人可以指导我如何编写查询,以便当我将查询传递给 find 方法时,它将返回我所需的最大文档字段。提前致
我有一个 Entity 类,它是一个包含基本字段的抽象类。考虑以下代码: Entity entity = new DogEntity() mongoTemplate.save(entity) 在这种情
我是一名优秀的程序员,十分优秀!