我刚开始探索mongoDB。在那段时间里,我设法用以下数据创建一个简单的集合,
db.test.insert({name : "joe", age : 20});
db.test.insert({name: "james", age : 25});
现在我通过使用
查询了它db.test.find({name : {$not : {$eq : "joe", $eq: "james"}}})
它让我得到以下结果,
{name : "joe", age : 20}
我在这里很困惑,是不是像下面这样的操作,
SELECT * FROM test where not name = "joe" and not name = "james"
Doubt1:如果是,那么上面提到的mongo查询如何被解释为普通的mysql查询? [注意:我来自mysql背景。]请解释一下。
怀疑2:还要解释以下mongo查询,
db.test.find({name : "joe", age : 20});
以上查询是否等于select * from test where name='joe' and age=20
?如果不是那么它将如何被解释为正常的mysql查询?
答案 0 :(得分:4)
使用{$eq : "joe", $eq: "james"}
创建对象时,您使用相同的对象键两次。因此,james
将覆盖joe
,因为它们都使用相同的对象密钥$eq
。
要进行查询,您可以尝试使用NOT (name = "joe" OR name = "james")
之类的内容。因此,您将OR
添加到您的mongo查询中:
db.test.find({name : {$nor: [{$eq: "joe"}, $eq: "james"]}})
答案 1 :(得分:1)