0

我们有这个计划:

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文档中是唯一的吗?

4

1 回答 1

1

您可以在查询中使用点表示法并在投影中使用$位置运算符将输出过滤为仅匹配的subsets元素,如下所示:

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

关于你的第二个问题,将在整个集合中强制执行为唯一,但(违反直觉)仍然允许在同一个文档number中多次存在。 Root

于 2013-01-09T14:09:13.907 回答