Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带条件项目第二个参数的MongoDB查找_Mongodb - Fatal编程技术网

带条件项目第二个参数的MongoDB查找

带条件项目第二个参数的MongoDB查找,mongodb,Mongodb,让这些命令出现在MongoDB shell中: > use testDB > db.testCol.insertMany([ { score: 5 }, { score: 8 } ]) 现在,我想获取所有收集的数据,但是使用find的条件投影。 因此,假设我想在结果文档中包含score字段,仅当score值大于6时 像这样的事情(错误): > db.testCol.find({}, { score: { $gt: 6 } }) 我的目标结果: { "_id&quo

让这些命令出现在MongoDB shell中:

> use testDB
> db.testCol.insertMany([ { score: 5 }, { score: 8 } ])
现在,我想获取所有收集的数据,但是使用
find
的条件投影。 因此,假设我想在结果文档中包含
score
字段,仅当
score
值大于
6

像这样的事情(错误):

> db.testCol.find({}, { score: { $gt: 6 } })
我的目标结果:

{ "_id" : ObjectId("...") }
{ "_id" : ObjectId("..."), "score": 8 }

我怎么做?仅使用
find
方法?

您可以从MongoDB v3.6开始使用条件运算符
$cond
,在条件不匹配时删除字段

  • MongoDB 4.4版:

  • MongoDB 3.6或以上版本:

您可以从MongoDB v3.6开始使用条件运算符
$cond
,在条件不匹配时删除字段

  • MongoDB 4.4版:

  • MongoDB 3.6或以上版本:

我得到:
“不受支持的投影选项:分数:{$cond:[{$gt:[\“$score\”,6.0]},\“$score\”,\“$$REMOVE\”]}
我的版本是
4.2.7
好了,找到()中的$cond投影将是mongodb v4.4中的支持格式,为此你需要使用聚合(),我正在更新我的答案,不需要。我的版本不是最新的。我只是寻找了最新的答案。我得到:
“不受支持的投影选项:score:{$cond:[{$gt:[\“$score\”,6.0]},\“$score\”,\“$$REMOVE\”]}”
我的版本是
4.2.7
好的。find()中的$cond投影将支持mongodb v4.4,为此,您需要使用aggregate()我正在更新我的答案,不需要。我的版本不是最新的。我只是在寻找最新的答案。
db.testCol.find({},
{
  score: {
    $cond: [{ $gt: ["$score", 6] }, "$score", "$$REMOVE"]
  }
})
db.collection.aggregate([
  {
    $project: {
      score: {
        $cond: [{ $gt: ["$score", 6] }, "$score", "$$REMOVE"]
      }
    }
  }
])