私はMongoDBを使い始めましたが、かなり慣れていません。MongoDB のドキュメントに制約を適用する方法はありますか? 主キーを指定したり、属性を一意として取得したりしますか? または、特定の属性が最小値より大きいことを指定しますか?
2 に答える
インデックスでネイティブに利用可能な一意性制約を超えるには、 Mongooseのようなものと、フィールドベースの検証をサポートするその機能を使用する必要があります。これにより、最小値などのサポートが提供されますが、更新が Mongoose スキーマ/モデルを通過する場合のみです。
MongoDB 3.2 アップデート
ドキュメントの検証は、MongoDB によってネイティブにサポートされるようになりました。
ドキュメントの例:
db.createCollection( "contacts",
{ validator: { $or:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
]
}
} )
「スキーマレス」データベースであるため、言及したことのいくつかは、db 側ではなくアプリケーション側から制限する必要があります。(「最小値」など)
ただし、インデックスを作成することはできます (クエリを実行するキー -- クエリでは一度に 1 つのインデックスしか使用できないことに注意してください。そのため、クエリを実行する可能性のある各フィールドにインデックスを付けるだけではなく、通常、クエリに合わせてインデックスを設計することをお勧めします)。 http://www.mongodb.org/display/DOCS/Indexes#Indexes-Basics
また、一意の制約と同様の一意性を強制する一意のインデックスを作成することもできます (配列フィールドなど、いくつかの注意事項があります): http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique %3真