データベースに、ドキュメントのバリデーションを適用するドキュメントがいくつかあります。これらの文書にはすべて文書が埋め込まれている場合があります。 SQL非NULLチェックの行に沿って単純な検証を適用することができます(これらは基本的に主キー制約を強制します)が、オプションの配列と埋め込みドキュメントに何らかの条件付き検証を適用したいとします。一例では、私はこのようになります文書を持って言うことができます:MongoDB配列と埋め込みドキュメントの条件付きバリデーション
{
"date": <<insertion date>>,
"name" : <<the portfolio name>>,
"assets" : << amount of money we have to trade with>>
}
明らかに私は、すべての挿入時に存在し、その日付の名前と資産を確実にするために、この文書の検証を置くことができます。サブのこの配列に条件付きの検証を適用するために
{
"date" : <<insertion date>>,
"name" : <<the portfolio name>>,
"assets" : << amount of money we have to trade with>>
"portfolio" : [
{ "stockName" : "IBM",
"pricePaid" : 155.39,
"sharesHeld" : 100
},
{ "stockName" : "Microsoft",
"pricePaid" : 57.22,
"sharesHeld" : 250
}
]
}
ことが可能です:私は株式ポートフォリオを管理していますし、文書が将来のアップデートを持つことができることは、このような株の配列を表示するために、しかし、言うことができますドキュメント?ポートフォリオが存在しないことは有効ですが、配列内の各文書に「stockName」、「pricePaid」および「sharesHeld」という3つのフィールドが含まれている必要がある場合は有効です。代わりに、この上記の検証では
MongoDBではなくMongoDBを直接使用しているので、私はあなたの解説を理解していません(私はMongooseが何であるかはわかりませんが)。私はコレクションに挿入されたすべてのドキュメントが有効になるようにmongoデータベースを設定します。私の場合、私は文書を挿入する人を支配していない文書を確実に行う必要があります。 –
@RichardB - 更新された答えを見てください、私はあなたのシナリオのためのmongoシェル検証を与えました。 –
そのクレメントに感謝します。あなたはそれが明白に見えるようにそれを表現すると、なぜ私はそれを理解していないのか分かりません:) –