【问题标题】:Mongoose query on json arrayjson数组上的猫鼬查询
【发布时间】:2014-05-12 06:42:05
【问题描述】:

我是 node.js 的新手,并且使用 mongoose 和 node.js。

架构:

var userSchema = new mongoose.Schema({
username: String,
password: String,
phone_no : String,
email: String,
name:String,
dob: {type: Date, "default": Date.now},
city:String,
locality:{lattitude:Number,longitude:Number},
sports: [String]
});

示例条目:

"userId": 10,
    "username": "shu",
    "name": "shubham goyal",
    "password": "ahu",
    "phone_no": "919357701457",
    "email": "shubham2892@gmail.com",
    "city": "delhi",
    "_id": {
        "$oid": "5331dbc243bb59f80a7ed60b"
    },
    "sports": [
        "cricket,football"
    ],
    "dob": {
        "$date": "2014-03-25T19:40:50.886Z"
    },
    "__v": 0
}

我正在尝试进行的查询:

models.user.find({'sports' : sports_selected},function(err,users) {
        if(err) {
            console.log("Cannot fetch sports with requested username" + req.user.username);
            console.log(err);
        }if(!users){
            console.log("cannot find specified username" + req.user.username);
        }else{
            console.log(users.username);
            //sport = player.sports;
            //sport = ['cricket','football','basketball'];

            }
        });

我在 users.username 中未定义。我想返回所有选择特定运动的用户说“板球”。我用谷歌搜索了很多,但找不到任何东西。

【问题讨论】:

    标签: json node.js mongodb mongoose


    【解决方案1】:

    您的示例条目的格式似乎不正确。体育条目不应该是这样的:

    "sports": [
            "cricket,football"
    ]
    

    您应该像这样保留运动数据:

    "sports": [
            "cricket","football"
    ]
    

    如果您在同一字符串中提供板球和足球,mongo 无法将这两者区分为不同的运动。

    另外 users 应该是一个数组,所以需要遍历数组。假设您有一位用户选择了板球运动,那么您可以打印 users[0].username

    【讨论】:

    • 非常感谢兄弟..!!\
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2020-06-02
    • 2012-02-03
    • 2022-11-22
    • 2015-01-04
    • 2016-07-27
    相关资源
    最近更新 更多