MongoDB - 查找值为空或小于 X 的结果

标签 mongodb

我在 MongoDB 中有一个集合,其中包含两个日期,用于定义某些内容是否是最新的。所以我有一个“end_date”,它可以为空,也可以有一个时间值。当前具有空 end_date 或 future 时间的项目。我的查询如下所示:

program_enrollments.find( {"start_date":{"$lte":1376982000},"end_date":[null,{"$gte ":1376982000}],"client":"52002d02cc94a31a0f000000"}, [] )

这对我来说看起来很合适,但我需要不同的方法吗?如果我可以避免的话,我不想有一个 bool 标志来说明日期是否是最新的。

最佳答案

$or 运算符有时会很麻烦,特别是如果您有其他具有多个选项的字段,那么您必须将所有 $or 嵌套在 $and 中。

另一种选择是使用否定运算符:

"end_date": {"$not": {"$lt":1376982000}}

这将为您提供与

相同的结果

$or: [{end_date: null}, {end_date: {$gte: 1376982000}}]

您的查询看起来像这样,IMO 更简洁:

program_enrollments.find({
  start_date: {$lte: 1376982000},
  end_date: {$not: {$lt: 1376982000}},
  client:"52002d02cc94a31a0f000000"
})

关于MongoDB - 查找值为空或小于 X 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342529/

相关文章:

node.js - 如何修改 Meteor 默认的 mongodb 配置?

java - 如何在 Mongo 中正确设置 JsonNode 但没有像在 Java 中使用 Jackson 的 String 那样设置它?

node.js - 如何在 mongodb 中为深度嵌套数组编写更新查询?

javascript - 保存新模型实例后、转换到 Ember.js 中的路由之前更新资源模型

node.js - Mongoose 在字段组合上找到

Mongodb slaveOk - 首选服务器

node.js - 通过多种条件获取资源的最佳实践是什么?

c++ - mongocxx 如何从 View 中构建文档?

node.js - 在Mongoose中填充后查询

c++ - CreateUser 使用 mongocxx 3.1.1 C++ 失败