Node.js Mongoose:从集合中检索ObjectId数组

Node.js Mongoose:从集合中检索ObjectId数组,node.js,mongodb,mongoose,robo3t,Node.js,Mongodb,Mongoose,Robo3t,我的数据库有以下类型的文档用于类别集合 { "_id" : ObjectId("56716afa403743492828aa07"), "cat_name" : "watches", "cat_parent_id" : [ ObjectId("56716afa403743492828aa01"), ObjectId("56716afa403743492828aa03") ] ......... } 我首先用Robomongo

我的数据库有以下类型的文档用于类别集合

{
    "_id" : ObjectId("56716afa403743492828aa07"),
    "cat_name" : "watches",
    "cat_parent_id" : [
        ObjectId("56716afa403743492828aa01"),
        ObjectId("56716afa403743492828aa03")
    ]
   .........
}
我首先用Robomongo创建了数据库,然后尝试使用mongoose获取数据,并创建了以下模式

var categorySchema = new Schema({
    'cat_name' : String,
    'cat_parent_id' : [{ type : mongoose.Types.ObjectId }],
    .......
});
但当我通过以下回调得到结果时

Categories.find(function(err,categories){........});
cat\u parent\u id数组为空

编辑:


当我用Schema.Types.ObjectId或String替换mongoose.Types.ObjectId时,它可以工作。有人能提供原因吗?

您需要为ObjectId类型添加引用:

var categorySchema = new Schema({
   'cat_name' : String,
   'cat_parent_id' : [{
              type: mongoose.Schema.Types.ObjectId,
              ref: 'Categories'
              }],
   .......
});

它不应该是{type:[mongoose.Types.ObjectId]}吗?看起来像是个傻瓜,原因是您需要使用
mongoose.Schema.Types
来声明架构属性
mongoose.Types
用于特定类型的实例化,但与模式设置无关。