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

MongoDB表达式中存在使用$

宇文弘懿
2023-03-14

作为背景,如果我想比较两个字段,我不能使用以下语法(因为它比较的是文字字符串“$lastname”,而不是$lastname字段的内容):

"$match": { "firstName": { $ne : "$lastName"} }

我得用这个:

"$match": { "$expr": { $ne : [ "$firstName", "$lastName" ] } }

如果我想测试一个字段是否存在,我必须使用第一种格式:

"$match": { "fullName": { "$exists": true } }

我认为用后一种格式表达$exists运算符的正确方法会引发错误:

db.docs.aggregate([
  {
    "$match": { "$expr": { "$exists": [ "$fullName", true ] } }
  }
])
assert: command failed: {
        "ok" : 0,
        "errmsg" : "Unrecognized expression '$exists'",
        "code" : 168,
        "codeName" : "InvalidPipelineOperator"
} : aggregate failed

这是否意味着至少在某些情况下不可能组合这些操作?具体地说,假设我想查找存在$fullname$或$firstname$ne$lastname的文档。那能表达出来吗?

共有1个答案

卓正业
2023-03-14

您需要使用$或逻辑运算符来执行此操作。

{
   "$or": [
      {
         "$expr": {
            "$ne": [
               "$firstName",
               "$lastName"
            ]
         }
      },
      {
         "fullName": {
            "$exists": true
         }
      }
   ]
}

上一次查询失败是因为mongod认为$exists是传递$expr运算符的表达式。

 类似资料:
  • 主要内容:使用正则表达式,在不区分大小写的情况下使用正则表达式,对数组元素使用正则表达式,优化正则表达式查询在编程语言中,正则表达式可以使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。MongoDB 可以使用 $regex 操作符来设置匹配字符串的正则表达式,MongoDB 使用 PCRE(Perl 兼容的正则表达式)作为正则表达式语言。 与文本搜索不同,您不需要执行任何配置或命令就可以直接使用正则表达式。假设我们已经在名为 posts 的集合中插入了一个文档,如下所示: 使用正则表达

  • 问题内容: 什么使字符以外的所有输入都可以使用的正则表达式模式?到目前为止,这就是我所拥有的- 问题答案: 如果您想要真正的正则表达式模式匹配,则需要滚动自己的CLR UDF。该链接介绍了如何执行此操作: http://msdn.microsoft.com/zh- CN/magazine/cc163473.aspx 请记住,您只能在SQL Server 2005或更高版本中执行此操作。 如果您只想

  • 我有以下在MongoDB中运行良好的MongoDB聚合查询 如何使用Spring Data MongoDB API来表示这个复杂的$sum操作? sum()方法只需要简单字符串。根据这张票(已关闭)https://jira.spring.io/browse/DATAMONGO-784聚合应支持复杂的操作,如$cmp和$cond 更新:这里似乎忘记了该方法的sum(AggregationExpres

  • 问题内容: 我有一个带有div的html页面,这些div的 ID 为 s1 , s2 等形式。 我想将CSS属性应用于这些部分/ div的子集(取决于id)。但是,每次添加 div时 ,都必须像这样分别为该部分添加css。 css中是否有类似正则表达式的内容,可用于将样式应用于一组 div 。 问题答案: 您可以设法选择那些元素而无需任何形式的正则表达式,如先前的答案所示,但是要直接回答问题,可以

  • 问题内容: 我正在尝试使用SpEL根据我定义的一些规则将同一文档加载到不同的集合中。 因此,从我所拥有的开始: -首先文件: -秒我有应该提供集合名称的提供者bean: 问题是,当我尝试将文档插入应由提供程序生成的特定集合中时,我得到以下stacktrace: org.springframework.expression.spel.SpelEvaluationException:EL1057E :

  • 问题内容: 有没有办法让AngularJS在模型数据中评估表达式? HTML: 模型: 最终结果将是:。 问题答案: 您可以使用该服务来插值字符串… JSFiddle