2017-11-05 10 views
0

に私は、私はそれでteacherプロパティなしで、唯一all the coursesselectにできるようにしたいmongoDb.文書の選択サブドキュメントとMongoDBの

で、次の文書構造を持っている場合のプロパティを除外します。どうやってやるの?

私は以下を試しましたが、うまくいきません。また、resultが見つかったら、それをconsoleに返しますか?

どうすればいいですか?

student.findCourses = (fcallback) => { 
     var jCourses = { 
      "courses": [ 
       { 
        "courseName": "Web-development" 
       }, 
       { 
        "courseName": "Databases" 
       }, 
       { 
        "courseName": "Databases" 
       } 
      ] 
     } 
    global.db.collection('students').find(({}, { jCourses: true, _id: false, firstName: false, lastName: false, age: false, teachers: false }).toArray, (err) => { 

     if (err) { 
      var jError = { "status": "error", "message": "ERROR -> student.js -> 001" } 
      console.log(jError) 
      return fcallback(true, jError) 
     } 
     var jOk = { "status": "ok", "message": "student.js -> found -> 000" } 
     console.log(jOk) 
     return fcallback(false, jOk) 

    }) 
} 

文書:

{ 
       "firstName": "Sarah", 
       "lastName": "Jepsen", 
       "age": 27, 
       "courses": [ 
        { 
         "courseName": "Web-development", 
         "teachers": [ 
          { 
           "firstName": "Santiago", 
           "lastName": "Donoso" 
          } 
         ] 
        }, 

        { 
         "courseName": "Databases", 
         "teachers": [ 
          { 
           "firstName": "Dany", 
           "lastName": "Kallas" 
          }, 
          { 
           "firstName": "Rune", 
           "lastName": "Lyng" 
          } 
         ] 
        }, 
        { 
         "courseName": "Interface-Design", 
         "teachers": [ 
          { 
           "firstName": "Roxana", 
           "lastName": "Stolniceanu" 
          } 
         ] 
        } 
       ] 
      } 

結果は次のようになります。

 { 
     "courses": [ 
      { 
       "courseName": "Web-development" 
      }, 
      { 
       "courseName": "Databases" 
      }, 
      { 
       "courseName": "Databases" 
      } 
     ] 
    } 

答えて

2

あなたは、ドットシンタックスを使用することができます。このよう

global.db.collection('students').find({}, { "courses.courseName": true, _id: false }).toArray((err, docs) => { 
    if (err) { 
     var jError = { "status": "error", "message": "ERROR -> student.js -> 001" } 
     console.log(jError) 
     return fcallback(true, jError) 
    } 
    var jOk = { "status": "ok", "message": "student.js -> found -> 000" } 
    console.log(jOk); 
    console.log(docs); // Will print to the console the data that you want 
    return fcallback(false, jOk) 

}) 

それはコースののみ courseNameを印刷します。モンゴシェル上

例:

> db.users.find().pretty() 
{ 
     "_id" : ObjectId("59ff442eb40a672f2223a14f"), 
     "firstName" : "Sarah", 
     "lastName" : "Jepsen", 
     "age" : 27, 
     "courses" : [ 
       { 
         "courseName" : "Web-development", 
         "teachers" : [ 
           { 
             "firstName" : "Santiago", 
             "lastName" : "Donoso" 
           } 
         ] 
       }, 
       { 
         "courseName" : "Databases", 
         "teachers" : [ 
           { 
             "firstName" : "Dany", 
             "lastName" : "Kallas" 
           }, 
           { 
             "firstName" : "Rune", 
             "lastName" : "Lyng" 
           } 
         ] 
       }, 
       { 
         "courseName" : "Interface-Design", 
         "teachers" : [ 
           { 
             "firstName" : "Roxana", 
             "lastName" : "Stolniceanu" 
           } 
         ] 
       } 
     ] 
} 
> db.users.find({}, {_id: 1, "courses.courseName": 1}).pretty() 
{ 
     "_id" : ObjectId("59ff442eb40a672f2223a14f"), 
     "courses" : [ 
       { 
         "courseName" : "Web-development" 
       }, 
       { 
         "courseName" : "Databases" 
       }, 
       { 
         "courseName" : "Interface-Design" 
       } 
     ] 
} 
> db.users.find({}, {_id: 0, "courses.courseName": 1}).pretty() 
{ 
     "courses" : [ 
       { 
         "courseName" : "Web-development" 
       }, 
       { 
         "courseName" : "Databases" 
       }, 
       { 
         "courseName" : "Interface-Design" 
       } 
     ] 
} 
+0

たくさんThank's。出来た。 pretty()は実際に何をしていますか? – codeDragon

+1

あなたは歓迎です、それはmongoシェルの表示を読み込み可能な形でフォーマットします –

+0

選択結果をコンソールに戻したいと思いますが、どうすればいいですか? – codeDragon

関連する問題