通过Mongoose ODM中的唯一属性查找嵌入式文档

时间:2013-01-09 10:16:19

标签: node.js mongodb mongoose

我们有这个方案:

var SubsetSchema = new mongoose.Schema({
    number: {
        type: Number,
        index: true,
        unique: true,
    },
    name: String,
});

var RootSchema = new mongoose.Schema({
    name: String,
    subsets: [SubsetSchema],
});

mongoose.model('collection', RootSchema);
var Root = module.exports = mongoose.model('collection');

如何在Subset的整个集合中搜索单个number = 3文档?

我不清楚。对于上面的架构,number在整个集合或每个Root文档中都是唯一的吗?

1 个答案:

答案 0 :(得分:1)

您可以在查询中使用dot notation,并在投影中使用$ positional operator将输出过滤为匹配的subsets元素,如下所示:

Root.findOne({'subsets.number': 3}, {_id: 0, 'subsets.$': 1}, ...);

关于你的第二个问题,number将在整个集合中被强制执行,但是(反直觉地)仍然可以在相同 {{1}中多次存在文件。