当前位置: 首页 > 知识库问答 >
问题:

MongoTemplate拉取查询

曾嘉祯
2023-03-14

我正在尝试从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" ]
}
db.stores.update(
    { },
    { $pull: { vegetables: "carrots" },
    { multi: true }
)

共有1个答案

翟源
2023-03-14

您可以简单地使用下面的查询来提取p蔬菜对象数组中的任何字符串:

mongoTemplate.updateMulti(new Query(), new Update().pull("vegetables", "squash"), "stores");

在上面的查询中,执行后会拉出squash。有关详细信息,我还在上述查询之后和之前添加了关于stores集合的find查询:

    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 repo:https://Github.com/krishnaiitd/learningjava/blob/master/spring-boot-sample-data-mongodb/src/main/java/sample/data/mongo/main/application.java#l126

 类似资料:
  • 我使用的是Spring Boot+MongoDB。我需要根据一些条件查询数据库,我的方法如下所示: org.bson.bsonmaximumsizeExprocededException:文档大小46282052大于最大值16793600 有人能帮我做这个吗?

  • 假设我有一个mongo集合,如下所示: 我想使用Spring的mongoTemplate编写一个查询,只检索那些id.index=index1的文档。 使用mongo shell,我可以编写以下查询: 然而,我认为使用mongoTemplate会起作用的东西却不起作用。我尝试过: 有人可以帮助我使用mongoTemplate为这个查询提供正确的语法吗?

  • 我想使用条件查询。 这是我的问题 这是我的java代码 它给出

  • 我使用MongoTemplate处理MongoDB 我想将文档的列更新为当前时间 在Mongodb命令行客户端中,它将与 数据库集合名称。更新({_id:1},{timeCol:new Timestamp()});或db.collectionName。更新({_id:1},{timeCol:new Date()}); 但是我不知道我是如何通过使用mongo模板做到这一点的。 更新更新;update

  • 我正在查询具有嵌套对象的集合。域模型如下所示: 我正在使用如下所示的条件进行查询: 同时,我还在研究如何解决这个问题,因为我不能改变文档结构...

  • 我在MongoTemplate的代码()中找到了这个转换器,对我来说,循环不是确定性的: