より良い解決策は、 _idを残すことです。 列をそのままにして、個別の userId およびfolderId ドキュメント内のフィールド、または両方を組み合わせた別のフィールドを作成します。
「同じくらい速い」かどうかはクエリによって異なりますが、たとえばドキュメントの「作成」日で並べ替える場合は、 _idで並べ替えるだけでは機能しなくなります。 また、シャーディングと配布 のメリットも失われます。 。
ただし、 _idに両方のIDを使用する場合 もう1つのオプションがあります...
実際には両方を使用できます ただし、別々に ...たとえば、これは有効な _id :
> var doc = { "_id" : { "userID" : 12345, "folderID" : 5152 },
"field1" : "test", "field2" : "foo" };
> db.crazy.save(doc);
> db.crazy.findOne();
{
"_id" : {
"userID" : 12345,
"folderID" : 5152
},
"field1" : "test",
"field2" : "foo"
}
>