【发布时间】:2014-01-16 12:15:36
【问题描述】:
我有一个名为 StudentCollection 的集合,下面给出了两个文档,
> db.studentCollection.find().pretty()
{
"_id" : ObjectId("52d7c0c744b4dd77efe93df7"),
"regno" : 101,
"name" : "Ajeesh",
"gender" : "Male",
"docs" : [
"voterid",
"passport",
"drivinglic"
]
}
{
"_id" : ObjectId("52d7c6a144b4dd77efe93df8"),
"regno" : 102,
"name" : "Sathish",
"gender" : "Male",
"dob" : ISODate("2013-12-09T21:05:00Z")
}
为什么当下面的查询不满足我在 find 命令中给出的条件时,它会返回一个文档。我知道对于 AND 比较而言,这是一个糟糕而愚蠢的查询。我用 MySQL 试过这个,它没有按预期返回任何东西,但为什么 NOSQL 会出现问题。我希望它正在考虑最后一个字段进行比较。
> db.studentCollection.find({regno:101,regno:102}).pretty()
{
"_id" : ObjectId("52d7c6a144b4dd77efe93df8"),
"regno" : 102,
"name" : "Sathish",
"gender" : "Male",
"dob" : ISODate("2013-12-09T21:05:00Z")
}
谁能简要介绍一下为什么 Mongodb 会这样工作?
【问题讨论】:
-
正如 Kenneth 指出的那样,您只得到一个结果的原因是为您的查询创建的 JavaScript 对象只能有一个 regno 值。您可以通过在 mongo JavaScript shell 中输入:a = {regno: 10, regno2: 20} 然后输入 b = {regno: 10, regno: 20} 来证明这一点。