为什么MongoDB中的$ lt不能在这个查询中工作?

时间:2015-02-19 15:10:42

标签: mongodb mongodb-query

我正在为正在学习语言的人开发一个网络平台,我为这样的用户提供了一个集合:

{
    "_id" : ObjectId("54a15e7e3453b5741a6c7be0"),
    "name" : "Miguel Lopez",
    "lng" : [ 
        {
            "ES" : 5
        }, 
        {
            "EN" : 4
        }, 
        {
            "IT" : 3
        }
    ],
    "email" : "miguel@gmail.com",
    "password" : "123456"
}

在“lng”字段中,我保存了该用户正在学习的语言,每种语言的级别在1到5之间。要获取正在学习“ES”且级别为5的用户列表,我使用此查询:

db.users.find({lng : {ES:5}})

它完美运行,但是当我想要具有特定语言(例如“EN”)的获取用户的级别小于5时,我使用此查询:

db.users.find({lng : {EN:{$lt: 5}}})

但是这个查询不起作用,我不知道原因,当我尝试在Robomongo中执行此查询时,我收到此消息:“脚本成功执行,但没有结果显示”

1 个答案:

答案 0 :(得分:1)

您需要使用$elemMatchdot notation

db.users.find({lng : {$elemMatch: {EN:{$lt: 5}}}})
db.users.find({ "lng.EN" : { "$lt" : 5 } })