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}, ...);

2番目の質問に関してnumberは、コレクション全体で一意として強制されますが、(直感に反して)同じ Rootドキュメントに複数回存在することは依然として許可されます。

于 2013-01-09T14:09:13.907 に答える