Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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文档和理解如何执行一个简单的查询时遇到了困难 让我们假设我有以下文件: { "user_name": "john doe" "friendsList": [ {"name": "maria"}, {"name": "maria"}, {"name": &quo

晚上好,我在浏览MongoDB文档和理解如何执行一个简单的查询时遇到了困难

让我们假设我有以下文件:

{
   "user_name": "john doe"
   "friendsList": [
      {"name": "maria"}, 
      {"name": "maria"},
      {"name": "maria"}
   ]
}
我想通过
“用户名”检索文档:“john doe”
(它是唯一的),但前提是
friendsList
数组中的所有对象都具有
name=maria
。换句话说,将返回上面的文档,但下面表示的文档将导致
没有匹配项

{
   "user_name": "john doe"
   "friendsList": [
      {"name": "maria"}, 
      {"name": "stryx"},
      {"name": "maria"}
   ]
}

我曾尝试使用
$all
查询选择器和其他选择器,但所有这些选择器都导致数组中至少有一个对象匹配的行为。

尝试
$elemMatch
$not
操作符

  • $elemMatch
    name
    不等于
    maria
    ,使用elemMatch结果的
    $not
    进行否定检查意味着所有元素都应包含
    maria
    name
  • $ne
    要忽略空的
    好友列表
    ,这是可选的

db.collection.find({
  user_name: "john doe",
  "friendsList": {
    $ne: [],
    $not: {
      $elemMatch: {
        name: { $ne: "maria" }
      }
    }
  }
})