Mongodb 选择数组中所有对象都具有某些值的文档
晚上好,我在浏览MongoDB文档和理解如何执行一个简单的查询时遇到了困难 让我们假设我有以下文件:Mongodb 选择数组中所有对象都具有某些值的文档,mongodb,Mongodb,晚上好,我在浏览MongoDB文档和理解如何执行一个简单的查询时遇到了困难 让我们假设我有以下文件: { "user_name": "john doe" "friendsList": [ {"name": "maria"}, {"name": "maria"}, {"name": &quo
{
"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" }
}
}
}
})