嵌入文档 - MongoDB with Mongoose
Embedding a document - MongoDB with Mongoose
我是一名前端 iOS 开发人员,Mongoose 对我来说是个新手。我正在尝试将父类别嵌入到子类别文档中。这是 obj-c 数据模型:
@interface CategorySub : MTLModel <MTLJSONSerializing>
@property (nonatomic) NSString* objectId;
@property (nonatomic) NSString* name;
@property (nonatomic) CategoryMain* categoryMain;
@end
这是 Mongoose CategorySub
架构定义:
var CategorySubSchema = new Schema({
name: { type: String },
_category_main : { type: String, ref: 'CategoryMain' }
},
{
collection: 'categories_sub'
}
)
还有 CategoryMain
架构,目前只是一个名称:
var CategoryMainSchema = new Schema({
name: { type: String }
},
{
collection: 'categories_main'
}
)
这里是相关的 create
代码:
CategorySub.create({
name : req.body.name,
_category_main : req.body.category_main._id
}, function(err, data){
我在 MongoUI 中获得的 CategorySub
文档之一是这样的:
如何更改架构 def and/or create
调用代码以在 CategorySub
文档中嵌入 category_main
?
看起来您的创建代码只保存了 _id 并使用 dbref 来反对子文档。这就是您只获取 ID 而不是整个子文档的原因。
CategorySubSchema
.findOne({ name: 'YOUR NAME' })
.populate('_category_main') // <--
.exec(function (err, subdata) {
if (err)
console.log('The creator is %s', subdata.name);
})
请看这里:http://mongoosejs.com/docs/2.8.x/docs/populate.html
还有一种方法是使用子文档。在你的情况下,它看起来像这样。:
var CategoryMainSchema = new Schema({
name: { type: String },
subCategories: [CategorySubSchema]
});
在创建案例中,您需要执行以下操作:
var categoryMain = new CategoryMainSchema({name: "sub doc", subCategories: [your sub document] });
请在此处查看文档:http://mongoosejs.com/docs/subdocs.html
希望对您有所帮助。
我是一名前端 iOS 开发人员,Mongoose 对我来说是个新手。我正在尝试将父类别嵌入到子类别文档中。这是 obj-c 数据模型:
@interface CategorySub : MTLModel <MTLJSONSerializing>
@property (nonatomic) NSString* objectId;
@property (nonatomic) NSString* name;
@property (nonatomic) CategoryMain* categoryMain;
@end
这是 Mongoose CategorySub
架构定义:
var CategorySubSchema = new Schema({
name: { type: String },
_category_main : { type: String, ref: 'CategoryMain' }
},
{
collection: 'categories_sub'
}
)
还有 CategoryMain
架构,目前只是一个名称:
var CategoryMainSchema = new Schema({
name: { type: String }
},
{
collection: 'categories_main'
}
)
这里是相关的 create
代码:
CategorySub.create({
name : req.body.name,
_category_main : req.body.category_main._id
}, function(err, data){
我在 MongoUI 中获得的 CategorySub
文档之一是这样的:
如何更改架构 def and/or create
调用代码以在 CategorySub
文档中嵌入 category_main
?
看起来您的创建代码只保存了 _id 并使用 dbref 来反对子文档。这就是您只获取 ID 而不是整个子文档的原因。
CategorySubSchema
.findOne({ name: 'YOUR NAME' })
.populate('_category_main') // <--
.exec(function (err, subdata) {
if (err)
console.log('The creator is %s', subdata.name);
})
请看这里:http://mongoosejs.com/docs/2.8.x/docs/populate.html
还有一种方法是使用子文档。在你的情况下,它看起来像这样。:
var CategoryMainSchema = new Schema({
name: { type: String },
subCategories: [CategorySubSchema]
});
在创建案例中,您需要执行以下操作:
var categoryMain = new CategoryMainSchema({name: "sub doc", subCategories: [your sub document] });
请在此处查看文档:http://mongoosejs.com/docs/subdocs.html
希望对您有所帮助。