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

mongo-将null或未定义的fieled视为特定值

宣星光
2023-03-14
 [
   {
      '_id': ObjectId('somehting'),
      'date': null
   },
   {
      '_id': ObjectId('somehting'),
   },
   {
      '_id': ObjectId('somehting'),
      'date': '2015-01-01 12:12:12'
   },
   many others
 ]

编辑:我需要这样做,所以如果$gt中发送的日期是0000-00-0000:00:00,查询将返回结果中的文档。

共有1个答案

越景天
2023-03-14

在一般查询中,则为否。您总是可以将它们从结果中删除,如下所示:

db.getCollection('validation_archive').find({
    "date": { "$lte": date_to, "$gte" date_from, "$ne": null }
})

也可以使用.aggrege(),使用建议的“零”或“纪元”日期进行“包容”:

db.getCollection('validation_archive').aggregate([
    { "$redact": {
        "$cond": {
            "if": {
                "$and": [
                    { "$gte": [ date_from, { "$ifNull": [ "$date", new Date(0) ] } ] },
                    { "$lte": [ date_to, { "$ifNull": [ "$date", new Date(0) ] } ] }
                ]
            },
            "then": "$$KEEP",
            "else": "$$PRUNE"
        }
    }}
])

但在你所问的上下文中,我们必须问“重点是什么”。

db.getCollection('validation_archive').aggregate([
    { "$project": {
        "date": { "$ifNull": [ "$date", new Date(0) ] }
    }},
    { "$match": {
        "$or": [
            { "date": { "$lte": date_to, "$gte" date_from } }, 
            { "date": { "$eq": Date(0) } }
        ]
    }}
])

但话说回来,为什么不直接做:

db.getCollection('validation_archive').find({
   "$or": [
        { "date": { "$lte": date_to, "$gte" date_from },
        { "date": null },
        { "date": { "$exists": false } }
   ]
})

这样效率高得多。

因此,可以在不存在的情况下“投影”为日期,但最有意义的做法是简单地使用基本的查询操作。

 类似资料:
  • 问题内容: 当我编写手表处理函数时,我会在和上检查newVal参数。为什么AngularJS具有这种行为,却没有特定的实用程序方法?所以有但没有。手动实现并不难,但是如何扩展角度以在每个控制器中具有该功能?Tnx。 编辑 : 这个例子: 处理这种方法是否普遍接受? 编辑2 : JSFiddle示例(http://jsfiddle.net/ubA9r/): 问题答案: 您始终可以为您的应用程序完全添

  • 获取错误。我尝试做多个选择,并更改第二个选择的数据与第一个选择的上更改材料表行。我正在使用Firebase。 当“store.Urunler”为null或未定义时,我会出现此错误。而且我的产品没有列在菜单项上,这意味着选择是空的,但state.products有数据 我怎样才能克服这个错误。我还想添加到Urunler,选择一个输入。我知道我应该为onChanges调用函数,但如果它起作用,我以后会

  • 我正在运行一个React应用程序。 当我通过路由(单击按钮或链接)进入页面时,页面工作正常,但当我重新加载页面时,页面崩溃。我看不到错误在哪里,控制台和源代码显示为空,这是服务器消息控制台消息。 这是运行的代码。我尝试删除currentuser、addhabity和许多其他东西,只是为了了解错误的来源。没有结果。如果我通过链接进入页面,一切正常。 HabiddView.web.jsx 生活orm.

  • 我有一个spring data mongo存储库类 在测试配置中,我使用EnableMongoRepositories注释 原因:org.springframework.beans.factory.nosuchbeandefinitionexception:在org.springframework.beans.factory.support.defaultlistablebeanfactory.g

  • 我正在我的反应应用程序中创建一个上一个和下一个按钮。我试图获取页面的当前索引(我有一个存储在对象中的页面列表) 这是密码 我得到的错误是“类型错误:无法将未定义或空转换为对象” 需要明确的是,imageName和images不是空的或未定义的(因为当I console.log它时,它有我需要的数据)。 提前谢谢!

  • 本文向大家介绍DB2表的特定列定义为“ NOT NULL WITH DEFAULT”。,包括了DB2表的特定列定义为“ NOT NULL WITH DEFAULT”。的使用技巧和注意事项,需要的朋友参考一下 当我们定义DB2表时,我们可以将任何列声明为“ NOT NULL”,这意味着在任何情况下该列都不能存储NULL值。 现在,如果我们尝试使用NULL指示符中的-1值将NULL值存储在COBOL-