2016-11-28 6 views
0

と私はマングースで、コレクションを照会しようとしていないが、シンプルdb.course.find()クエリMongoDBのクエリの作業が、マングース

{ 
    "_id" : ObjectId("581c9408fc01b15cb21043e4"), 
    "calendar_id" : DBRef("calendar", ObjectId("581c5972fd1c59295c34f1b8"), "ecampus"), 
    "date" : 1478473200000, 
    "title" : "Conception et planification BI", 
    "teacher" : "fiolet gilles", 
    "start_at" : "08:30", 
    "end_at" : "12:30" 
} 

で採取試料の出力がある私はよく

仕事MongoDBのクエリを持っています
db.course.find({'calendar_id.$id': ObjectId("581c5972fd1c59295c34f1b8")}).sort({date: 1}) 

NodeJSアプリケーションでMongooseと同じクエリを実行しようとしています ObjectIdがうまく機能しないため、このクエリを作成しましたが、空の配列を返します。

let mongoose = require('mongoose'); 
let ObjectId = mongoose.Types.ObjectId; 
let id = new ObjectId(session.calendar_id); 

Course.find({'calendar_id.$id': id}).sort({date: 1}).exec(function (err, courses) { 
    console.log(err, courses); 
    createJsonBody(courses); 
}); 

Course私のモデルファイルからのものであり、私はこのマングースクエリが動作するようにすることができますどのようにこの

const Course = mongoose.model('course', { 
    calendar_id: Schema.ObjectId, 
    date: Number, 
    title: String, 
    teacher: String, 
    start_at: String, 
    end_at: String 
}); 

のようなものですか?モデルが正しく形成されていない可能性がありますか?

答えて

1

Course.find({'calendar_id.$id': id})の代わりにCourse.find({'calendar_id': id})を使用してください。

マングースの場合、$ idは存在しません。

+0

ありがとう、これは完璧な答えです! –

+1

また、最初に 'ObjectId'にidをキャストする必要はありません。暗黙のうちにMongooseはそれを暗黙のうちに行います。 – chridam

関連する問題