- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经可以在 mongoshell 上执行所需的查询,但我需要使用 Java 和 MongoOperations 进行相同的查询。
我查过 this问题,非常相似,但它只有一个条件,因为我的有两个条件并使用 $gte
和 $lt
运算符。这是工作的 mongo 查询:
db.getCollection('example').update({"idVar": "desiredValued"}, { $pull: { "listaHoras": { $gte: ISODate("2016-11-06T05:50:00.000Z"), $lt: ISODate("2016-11-06T06:30:00.000Z")}}})
示例文档:
"_id" : ObjectId("58221b4610a3c71f1894ce75"),
"idVar" : "56b11259272f5515b05d70bc",
"date" : ISODate("2016-11-06T03:00:00.000Z"),
"listaHoras" : [
ISODate("2016-11-06T05:40:00.000Z"),
ISODate("2016-11-06T06:30:00.000Z"),
ISODate("2016-11-06T06:40:00.000Z")
]
我将 ISODATE
作为 Java 中的 Date
变量,并将 desiredValue
作为字符串变量。
到目前为止,我已经执行了以下操作,以前面提到的问题为例:
BasicDBObject match = new BasicDBObject("idVar", desiredValue); // to match your document
BasicDBObject update = new BasicDBObject("listaHoras", new BasicDBObject("itemID", "1"));
coll.update(match, new BasicDBObject("$pull", update));
但是,正如您所看到的,这并不等同于所需的查询。由于 $pull
的匹配是将 "itemID"
与“1”匹配。我不知道,也无法找到如何在同一查询上正确使用 $gte
和 $lt
。也不讨论如何使用其中之一或两者。我知道这可以完成,如 MongoOperatioons API 上所示。其中说:
“更新 - 包含更新的对象或用于操作现有对象的 $ 运算符的更新文档。”
有人知道如何做到吗?如果 Java 中的 Date
类型与 Mongo 上的 ISODATE
匹配呢?
最佳答案
我设法找到了解决方案。它与 Veeram 发布的答案类似,但略有不同。我只是删除了他的 updateCriteria
并在其位置使用了 BasicDBObject
。
完整代码如下:
Query findQuery = new Query();
Criteria findCriteria = Criteria.where("idVar").is(idVar);
findQuery.addCriteria(findCriteria);
Update update = new Update().pull("listaHoras", new BasicDBObject( "$gte", start).append("$lte", end));
mongoOps.updateMulti(findQuery, update, "CollectionName");
其中 start
和 end
是该方法接收的日期变量。另外值得注意的是,Mongo 使用 UTC 作为默认时区,因此我们必须正确格式化时间,以便它删除所需的值。
关于java - 使用 MongoOperations 删除 Mongo 上的多个数组条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40806069/
我正在使用 Sprind Data MongoDb、MongoTemplate 和 MongoOperations 将数据保存到 MongoDB 中。一切工作正常,没有错误或异常,但数据仍然没有插入到
我的用户 POJO 如下所示: import org.springframework.data.annotation.Id; import org.springframework.data.mongo
刚刚开始使用 MongoDB 和 JAVA。 设置以下 JavaObject package com.foo.bar import org.springframework.data.annotatio
当我执行对数据库的请求时 db.users.find({"name": "Max"}) 我得到了这个结果 {"_id":ObjectId("5785718ee271a7c7ebaad28b"),"na
有没有办法将一些东西异步插入到 mongodb 中? 我知道 mongodb 在大多数情况下都相当快,但我想也许我可以通过在给出命令后立即返回来节省几毫秒。 它适用于连接到服务器以向 mongodb
我想创建一个 mongo capped 集合,为此,我在教程中看到我需要使用 MongoOperations bean。但我无法 Autowiring 它。 描述: com.daimon.reacti
我在 Spring-data-mongodb 1.1.1.RELEASE 中使用 MongoOperations 接口(interface),任何使用“id”作为选择器的查询都返回 null:Quer
我有一个使用 Spring Data MongoDB 和 MongoDB 驱动程序的简单 Java 应用程序。我只是将新用户添加到 MongoDB 集合中。但是当 MongoOperations 的保
我在 mongodb 和 mysql 中使用 spring 数据。我使用的版本如下: spring - 3.1.3.RELEASE spring-data-jpa - 1.2.0.REL
我的用户 POJO 看起来像: import org.springframework.data.annotation.Id; import org.springframework.data.mongo
我已经可以在 mongoshell 上执行所需的查询,但我需要使用 Java 和 MongoOperations 进行相同的查询。 我查过 this问题,非常相似,但它只有一个条件,因为我的有两个条件
任何人都可以将该查询转换为 mongo for java (org.springframework.data.mongodb.core.MongoOperations)??? 我无法在 Java 中进
在我的数据库中,我有一个看起来像这样的文档 { "_id" : ObjectId("5864ddd8e38112fd70b89893"), "_class" : "com.apic.m
我正在尝试使用 MongoOperarions,并且 upsert 方法仅更新/创建更新参数中存在的那些字段。但是,每当我发送要更新的空字段列表时,它都会删除数据库中的所有其他字段,成为唯一剩下的“I
我有这样的 JSON 结构: { "prodinfo": { "memberid": "m1", "user":{
我正在使用 spring-data 将我们的应用程序与 Mongodb 集成。在其中一个用例中,我调用了 MongoOperation.updateMulti(query, set.., Lead.c
我正在阅读 MongoOperations 的 SpringData MongoDB 配置 http://docs.spring.io/spring-data/mongodb/docs/current
这个问题的答案已经很少了。但它们都不适合我。 我一辈子都弄不明白为什么会出现错误。 以下是我尝试过的方法: 使用 AbstractMongoConfiguration 使用 ApplicationCo
我已经在本地和远程服务器上设置了 MongoDB,IP:10.11.12.13。当我执行以下操作时,可以使用命令行进行连接: mongo 10.11.12.13:27017 -u "root" -p
我正在使用 Spring boot 2.2.1.RELEASE。如何使用 Spring MongoOperation 编写以下 MongoDB 更新查询 db.cities.updateOne(
我是一名优秀的程序员,十分优秀!