【问题标题】:How to get document according this document's sub document id如何根据本文档的子文档id获取文档
【发布时间】:2014-06-10 20:55:28
【问题描述】:

我有一个产品架构和一个类别架构。

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 编写此查询?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    假设您有一个基于ProductSchema 定义的Product 模型定义,那么一般语法与标准的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() 方法,它提供了一种有效的替代方法,如果嵌入不实用,但效率不高。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2018-09-03
      • 2020-12-05
      相关资源
      最近更新 更多