Mongodb Mongo查询$exists:false未按预期运行

Mongodb Mongo查询$exists:false未按预期运行,mongodb,Mongodb,以上是我收藏的一个例子 当我执行以下查询时 { "_id" : ObjectId("5c541529fc3e371af7720346"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 } { "_id" : ObjectId("5c541529fc3e371af

以上是我收藏的一个例子

当我执行以下查询时

{ "_id" : ObjectId("5c541529fc3e371af7720346"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 }
{ "_id" : ObjectId("5c541529fc3e371af7720347"), "name" : "siddhanth", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : "122311223", "age" : 30 }
{ "_id" : ObjectId("5c54158efc3e371af7720348"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "skills" : [ "mountainclimbing" ], "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 }
{ "_id" : ObjectId("5c54158efc3e371af7720349"), "name" : "siddhanth", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : "122311223", "age" : 30 }
我得到的结果是“爱好”有“技能”

但当我执行

{ "_id" : ObjectId("5c54158efc3e371af7720348"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "skills" : [ "mountainclimbing" ], "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 }
我得到的记录也有“技能”

我是mongodb的新手。我错过了什么?你能解释一下吗

{ "_id" : ObjectId("5c541529fc3e371af7720346"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 }
{ "_id" : ObjectId("5c541529fc3e371af7720347"), "name" : "siddhanth", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : "122311223", "age" : 30 }
{ "_id" : ObjectId("5c54158efc3e371af7720348"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "skills" : [ "mountainclimbing" ], "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 }
{ "_id" : ObjectId("5c54158efc3e371af7720349"), "name" : "siddhanth", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : "122311223", "age" : 30 }
$elemMatch
遍历数组中的每个元素,检查是否有任何数组元素与返回文档的条件匹配

db.player.find({ hobbies:{ $elemMatch:{ skills:{ $exists:true }}}})

然而,
.dot
符号验证数组中的每个元素是否满足条件,然后只返回文档。

是否尝试了db.player.find({“嗜好.技能”:{$exists:true})。谢谢!你能解释一下为什么我的询问不起作用吗?
{ "_id" : ObjectId("5c541529fc3e371af7720346"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 }
{ "_id" : ObjectId("5c541529fc3e371af7720347"), "name" : "siddhanth", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : "122311223", "age" : 30 }
{ "_id" : ObjectId("5c54158efc3e371af7720348"), "name" : "Sanjeev", "hobbies" : [ { "title" : "Trekking", "skills" : [ "mountainclimbing" ], "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : 122311223 }
{ "_id" : ObjectId("5c54158efc3e371af7720349"), "name" : "siddhanth", "hobbies" : [ { "title" : "Trekking", "frequency" : 3 }, { "title" : "Cooking", "frequency" : 4 } ], "phone" : "122311223", "age" : 30 }
db.player.find({ hobbies:{ $elemMatch:{ skills:{ $exists:true }}}})
db.player.find({ "hobbies.skills": { $exists: true }})