我有一个 unitScores 集合,其中每个文档都有一个 id 和一个文档数组,如下所示:
"_id": ObjectId("52134edd5b1c2bb503000001"),
"scores": [
{
"userId": ObjectId("5212bf3869bf351223000002"),
"unitId": ObjectId("521160695483658217000001"),
"score": 33
},
{
"unitId": ObjectId("521160695483658217000001"),
"userId": ObjectId("5200f6e4006292d308000008"),
"score": 17
}
]
我有两个查找查询:
_id:new ObjectID(scoreId)
"scores.userId":new ObjectID(userId)
"scores.unitId":new ObjectID(unitId)
and
_id:new ObjectID(scoreId)
scores:
$elemMatch:
userId:new ObjectID(userId)
unitId:new ObjectID(unitId)
我希望他们给出相同的结果,但使用输入 userId 和 unitId
userId: 5212bf3869bf351223000002
unitId: 521160695483658217000001
点表示法版本返回错误的数组条目(分数为 17 的数组条目),而 $elemMatch 返回正确的条目(分数为 33 的数组条目)。这是为什么?
$elemMatch
与点符号的逻辑不同。$elemMatch
要求相同的嵌套元素具有值。使用点表示法允许任何嵌套元素具有值。因此,由于查询逻辑不同,您会看到不同的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)