猫鼬在引用的属性(子文档)中搜索对象的值

Mongoose search for an object's value in referenced property (subdocument)

我有两个模式:

var ShelfSchema = new Schema({
    ...
    tags: [{
        type: Schema.Types.ObjectId,
        ref: 'Tag'
    }]
});

var TagSchema = new Schema({
    name: {
        type: String,
        unique: true,
        required: true
    }
});

我想搜索 tags 数组具有特定值标签的所有货架。

我试过使用:

modelShelf.find({tags 'tags.name': 'mytag'})...

但它不起作用。它总是 returns 一个空数组。 任何的想法? 查看 db,每个 Shelf 实例仅链接标签的 objectID。 我使用了引用,因为我还需要使用标签实体。

在 mongoDB 中,您基本上不能直接执行此操作,因为查询一次针对单个 collection。最近添加了 new features,它允许在使用聚合框架时进行某种连接,但根据您的需要,这不是必需的。
从您的架构中,我看到标签的名称是唯一的,因此您可以先使用

之类的内容获取所需的标签
modelTag.find({name: 'mytag'})

为了获取标签的 ID,然后查询您的货架 collection 以获得此标签 ID

modelShelf.find({tags: tagId})