我们有这个方案:
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
文档中都是唯一的吗?
答案 0 :(得分:1)
您可以在查询中使用dot notation,并在投影中使用$
positional operator将输出过滤为匹配的subsets
元素,如下所示:
Root.findOne({'subsets.number': 3}, {_id: 0, 'subsets.$': 1}, ...);
关于你的第二个问题,number
将在整个集合中被强制执行,但是(反直觉地)仍然可以在相同 {{1}中多次存在文件。