Giải pháp tốt hơn nhiều sẽ là rời khỏi _id như nó vốn có và có userId riêng biệt và folderId các trường trong tài liệu của bạn hoặc tạo một trường riêng biệt với cả hai trường này được kết hợp với nhau.
Đối với việc nó sẽ "nhanh như thế nào" ... tùy thuộc vào truy vấn của bạn, nhưng đối với việc sắp xếp theo ngày "tạo" của tài liệu, chẳng hạn như bạn sẽ mất khả năng chỉ cần đặt hàng theo _id bạn cũng sẽ mất các lợi ích cho phân bổ và phân phối .
Tuy nhiên, nếu bạn muốn sử dụng cả hai ID đó cho _id của mình có một tùy chọn khác ...
Bạn thực sự có thể sử dụng cả hai nhưng hãy để chúng tách rời ... ví dụ:đây là _id hợp lệ :
> 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"
}
>