3

プロジェクトで初めてMongoDBを使用していますが、ドキュメント内の空白/未設定の値に推奨されるアプローチが何であるかはよくわかりません。将来的に価値があると思われるペアがある場合、これら2つのアプローチのどちらがより適切です。

1)説明フィールドが空の文字列である(そして将来入力される)JSON:

{
    "username": "jamies",
    "shortName": "camping",
    "setName": "Camping on Stevens",
    "description": ""
}

2)または、説明フィールドが省略されている(そして将来追加される)JSON:

{
    "username": "jamies",
    "shortName": "camping",
    "setName": "Camping on Stevens"
}

明らかに、2番目のアプローチはディスク容量を節約しますが、どの値がnullであるかも示しません。Mongo開発者/DBAによって推奨/規定されているものと、クエリまたは更新中にそのアプローチに関する考慮事項があるかどうかを理解したいと思います。

4

2 に答える 2

4

疑わしいとき

簡潔さから始めます。テストで必要に応じて、他の寸法を増やします。ジェフ・アトウッド

上記の引用はコードを参照していますが、ここでも適用されます。将来、空の文字列フィールドを追加したことを後悔するいくつかの状況を考えることができます。例えば。フィールドを非推奨にし、もう使用されておらず、人々を混乱させ、スペースを占有しているだけです。また、MongoDB Docs:Queryingandnullsも参照してください。

于 2012-11-06T19:28:53.597 に答える
1

1つの方法は、問題のドキュメント/集計に適用できないフィールドを無視することです。MongoDBのようなドキュメントデータベースはスキーマレスであり、これをネイティブにサポートします。その後、 $existsクエリ演算子を使用できます。しかし、ユースケースが存在に依存するクエリに重きを置いている場合、それはパフォーマンスが低く、代替の設計が言及されています。

もう1つの方法は、nullを使用して値がないことを示すことです。要素を追加して値として空の文字列を提供する代わりに、nullを使用することをお勧めします。ここでのXMLとやや似た議論ですが、これは何ですか:nullまたは空の要素ですか?

于 2012-11-06T19:47:41.903 に答える