Node.js Mongoose模式引用一对多

Node.js Mongoose模式引用一对多,node.js,mongodb,mongoose,schema,relationship,Node.js,Mongodb,Mongoose,Schema,Relationship,我想用Mongoose建立一个一对多的引用,但我不想保留ID列表 我所拥有的: 菜单分类模式 menuItemSchema Mongo Collection菜单项: Mongo Collection菜单分类: 预期结果: 我可以使用menuCategory填充menuItem,但我希望使用另一种方法。除非您将menuItem中的ObjectId数组存储在menuCategory集合中,否则我不知道如何执行此操作。这应该非常简单,只需使用类别id查找并填充每个项目。我想mongoose没有任何实现

我想用Mongoose建立一个一对多的引用,但我不想保留ID列表

我所拥有的:

菜单分类模式

menuItemSchema

Mongo Collection菜单项:

Mongo Collection菜单分类:

预期结果:


我可以使用menuCategory填充menuItem,但我希望使用另一种方法。

除非您将menuItem中的ObjectId数组存储在menuCategory集合中,否则我不知道如何执行此操作。这应该非常简单,只需使用类别id查找并填充每个项目。我想mongoose没有任何实现
var schema = new Schema({
    menuItem: [{
        type: Schema.ObjectId,
        ref: 'menuItem'
    }],
    icon: String,
    name: String
});
var schema = new Schema({
    menuCategory: {
        type: Schema.ObjectId,
        ref: 'menuCategory'
    },
    name: String,
    path: String
});
{
    "_id" : ObjectId("54be856e9ba3a972e4dc924e"),
    "menuCategory" : ObjectId("54be84919ba3a972e4dc924d"),
    "name" : "I am a menu item",
    "path" : "/item/path"
}
{
    "_id" : ObjectId("54be84919ba3a972e4dc924d"),
    "icon" : "awsome",
    "name" : "Main Category"
}
var menuCategory = require('./models/menuCategory');
menuCategory.find({}).populate('menuItem').exec(function(err,result){
    console.log(result);
})

{
    "_id": ObjectId("54be84919ba3a972e4dc924d"),
    "icon": "awsome",
    "name": "Main Category"
    "menuItem": [{
        "_id": ObjectId("54be856e9ba3a972e4dc924e"),
        "menuCategory": ObjectId("54be84919ba3a972e4dc924d"),
        "name": "I am a menu item",
        "path": "/item/path"
    }]
}