相关疑难解决方法(0)

使用$的条件分组存在于$ cond中

我有两个密钥A和B,它们在文档中的存在是互斥的.当A存在时我必须按A分组,当B存在时我必须按B分组.所以我$project将所需的值输入到一个名为MyKey的计算密钥中,我将执行该操作$group.但看起来我的语法错了.我尝试用两种方式编写$ project:

{$project: {MyKey: {$cond: [{$exists: ["$A", true]}, "$A", "$B"]}}}

{$project: {MyKey: {$cond: [{"A": {$exists:true}}, "$A", "$B"]}}}

但我一直收到错误:

{ "errmsg" : "exception: invalid operator '$exists'", "code" : 15999, "ok" : 0 } ...

出了什么问题?

mongodb mongodb-query

35
推荐指数
4
解决办法
3万
查看次数

MongoDB比较运算符为null

在MongoDB中,我想使用$ gt和$ lt比较运算符,其值可以为null.当运算符不使用null时,我查找了文档,但没有找到.在这两种情况下,它都没有返回任何文档(即使$ ne,$ gte和$ lte确实返回了文档;这意味着有些文档都等于且不等于null).

我希望$ gt基本上像$ ne一样运行(因为null类型的Mongo comarison命令是如此之低)和$ lt因为同样的原因没有返回任何内容.

我希望这可以工作,因为我传递给查询的值是变量(可能为null),我不想为null编写特殊情况.

鉴于以下集合,我正在考虑的示例:

{
  id: 1,
  colNum: null
}
{
  id: 2,
  colNum: 72
}
{
  id: 3
}
Run Code Online (Sandbox Code Playgroud)

我希望以下查询:

db.testtable.find( { "colNum" { $gt : null } } )
Run Code Online (Sandbox Code Playgroud)

回来:

{
  id: 2,
  colNum: 72
}
Run Code Online (Sandbox Code Playgroud)

但是,没有返回任何内容.

是否有一个原因,$ gt和$ lt似乎无法使用null,或者它是MongoDB错误,还是它实际上应该工作并且可能存在用户错误?

null spring mongodb spring-mongo

10
推荐指数
1
解决办法
2735
查看次数

标签 统计

mongodb ×2

mongodb-query ×1

null ×1

spring ×1

spring-mongo ×1