当在mongoose中find一些标准时获得空数组

架构:

var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Config = require('../Config'); var serviceAvailability = new Schema({ agentId: {type: Schema.ObjectId, ref: 'agentProfile', required: true}, availabilityDate: {type: Date, required: true}, availabilityTime: {type: Array, required: true} }); serviceAvailability.index({agentId:1 , availabilityDate:1},{unique:true}); module.exports = mongoose.model('serviceAvailability', serviceAvailability); 

控制器:

 Models.serviceAvailability.find({'agentId':'abcd'}, function (err, service) { console.log(service); if(service) { callback(err , service); } else { callback(err); } }); 

我试图得到所有的数据与一些标准,如果agentId等于一些价值,但每当我使用任何标准来查找数据我越来越空arrays,而如果我删除标准,find所有的数据,然后我得到的数据,为什么这是 ?

我想,你尝试在ObjectId字段上find一个带有请求的mongoDB文档,但是在你的例子中,你并没有使用正确的ObjectIdstring值。

ObjectId是一个12字节的BSONtypes,使用下面的构造:

所以,这是用正确的ObjectId请求serviceAbility的正确方法:

 Models.serviceAvailability.find({ 'agentId':'507f1f77bcf86cd799439011' }, function (err, service) { if (err) { callback(err); return; } callback(null, service); }); 

在这种情况下,您应该有一个agentProfileconfiguration文件_id等于507f1f77bcf86cd799439011