[Hỏi về truy xuất dữ liệu MongoDB] Find subdocument của Document



  • Bây giờ mình nhận được 1 chuỗi json
    {mssv:"BS00452", mark:9}

    Làm sao để truy vấn vào subdocument dưới để lấy name,group mà không cần biết thuộc document nào.

    Bác nào hiểu biết xin chỉ giáo

    0_1496653666489_Screen Shot 2017-06-05 at 4.07.03 PM.png



  • var array= [];
    data.student.forEarch(function(prot){
       array.push( {name:prot.name,group:prot.group})
    })
    
    array[0].name // Nguyển Văn Hữu
    array[0].group // 1
    
    array[1].name // Nguyển Văn Toàn
    array[1].group // 2


  • Bạn có thể dùng query bình thường với dot:

    .find({
      student.mssv: 'BS00452', 
      student.mark: 9
    })
    

    Hoặc dùng $elemMatch:

    .find({
      student: {
        $elemMatch: {
          student.mssv: 'BS00452', 
          student.mark: 9      
        }
      }
    })
    


  • @ndaidong
    1_1496734346796_Screen Shot 2017-06-06 at 2.31.48 PM.png 0_1496734346795_Screen Shot 2017-06-06 at 2.31.18 PM.png

    Mình không truy xuất được



  • @Hồ-Duy-Quốc-Bảo said in [Hỏi về truy xuất dữ liệu MongoDB] Find subdocument của Document:

    var array= [];
    data.student.forEarch(function(prot){
    array.push( {name:prot.name,group:prot.group})
    })

    array[0].name // Nguyển Văn Hữu
    array[0].group // 1

    array[1].name // Nguyển Văn Toàn
    array[1].group // 2

    dùng trong nodejs thì dùng thế nào hả anh?



  • Nếu bọn đang hỏi về truy vấn mongodb thì
    db.collection('student').find({mssv: 'BS00452, mark: 9'}).toArray((err, result) => {
    if(err) throw err;
    result.forEach(dt => {
    console.log(dt.name + ' ' + dt.group);
    });
    });
    Hope it cant help you!



  • @Nguyễn-Nhân Lạ nhỉ, bạn export cho mình 1 ít entries trong collection đó về test thử.


Log in to reply