我有一个产品架构和一个类别架构。
var ProductSchema = new Schema({
categories: [CategorySchema],
createdDate: { type: Date, default: Date.now },
});
var CategorySchema = new Schema({
name: String,
createdDate: { type: Date, default: Date.now },
});
如何获取包含特定类别的产品。如何使用mongoose.js编写此查询?
答案 0 :(得分:0)
假设您基于Product
定义具有ProductSchema
的模型定义,那么一般语法与标准mongoDB .find()
查询没有太大区别:
var categoryId; // As whatever the desired value of the ObjectId is
Product.find({ "categories._id": categoryId }, function(err,product) {
// Work with found document or err object here
});
因此,这只是查询的一个简单的“点符号”形式,以便引用子文档元素。
当然,您的架构结构似乎也基于embedded documents,这意味着您也应该能够访问该架构的任何其他属性:
Product.find({ "categories.name": "category name" }, function(err,product) {
// Work with found document or err object here
});
对于在自己的模型集合中具有CategorySchema
个对象的解决方案,还有.poulate()
方法,它提供了一种有效的,如果不是非常有效的替代嵌入不可行的嵌入。 / p>