2014-04-01 24 views
0

我是node.js的新手,並且使用mongoose和node.js.json數組上的Mongoose查詢

模式:

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": "[email protected]", 
    "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.I越來越不確定的想返回所有選擇特定運動的用戶說'cricket'。我搜索了很多,但找不到任何東西。

回答

0

它看起來像您的示例條目格式不正確。體育條目不應該是這樣的:

"sports": [ 
     "cricket,football" 
] 

你應該保持運動數據是這樣,而不是:

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

如果在相同的字符串提供板球和足球,蒙戈不能區分這兩個作爲不同的運動。

另外,用戶應該是一個數組,所以你需要遍歷數組。假設你有一名用戶將體育選作板球,那麼你可以打印用戶[0]。用戶名

+0

非常感謝bro .. !! \ – Shubham