MongoDB查询不相等
我正在尝试进行一些mongoDB查询,但它不起作用。 这是对象的外观:MongoDB查询不相等,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在尝试进行一些mongoDB查询,但它不起作用。 这是对象的外观: { "_id" : ObjectId("5c616e96aeddc93e2c076101"), "_class" : "school.domain.mongo.User", "username" : "test1234", "password" : "test1234", "status" : "ACTIVE", "time_created" : ISODate("2019-0
{
"_id" : ObjectId("5c616e96aeddc93e2c076101"),
"_class" : "school.domain.mongo.User",
"username" : "test1234",
"password" : "test1234",
"status" : "ACTIVE",
"time_created" : ISODate("2019-02-11T13:46:14.753+01:00"),
"last_modified" : ISODate("2019-02-11T13:46:14.753+01:00")
}
现在我需要找到在过去24小时内修改数据的用户
这是我尝试的查询,但它不起作用
db.getCollection('user').find({
$and : [
{"status" : "ACTIVE"},
{"last_modified" : { $lt: new Date(), $gte: new Date(new Date().setDate(new Date().getDate()-1))}},
{"last_modified" : { $ne: "time_created"}}
]
})
用户必须处于活动状态,最近一次在当前范围内修改,过去24小时内修改
最后一次修改必须和创建时间不同,因为若它和用户相同,那个么用户只在过去24小时内创建而并没有修改。
我尝试过这个查询,但它仍然为我提供具有相同上次修改值和创建时间值的用户。您必须使用它来匹配同一文档中的两个字段
db.getCollection('user').find({
"status" : "ACTIVE",
"last_modified": { "$lt": new Date(), "$gte": new Date(new Date().setDate(new Date().getDate()-1)) }
"$expr": { "$ne": ["$last_modified", "$time_created"] }
})
此查询来自@Anthony Winzlet working i Robo3T。但当我在spring中使用它进行自定义查询时:
@Query("{ $and : [ {'status' : 'ACTIVE'}, {'last_modified' : { $lt: new Date(), $gte: new Date(new Date().setDate(new Date().getDate()-1))}}, {'$expr': { '$ne': ['$last_modified', '$time_created']}}]}")
public List<User> findModifiedUsers();
但它不起作用,它返回给我所有用户,就像没有最后一个条件不等于最后一次修改和创建的时间一样。为什么不接受答案?@AnthonyWinzlet。如果你知道可能会有什么问题,请看第二个问题。对不起,我不知道弹簧靴
Query query = new Query();
Criteria criteria = new Criteria();
criteria.andOperator(Criteria.where("status").is(UserStatus.ACTIVE), Criteria.where("last_modified").lt(new Date()).gt(lastDay), Criteria.where("time_created").ne("last_modified"));