Допустим, у меня есть группа людей:
{ _id: ObjectId(1), name: "Bob" }
{ _id: ObjectId(1), name: "Alice" }
{ _id: ObjectId(2), name: "Bob" }
{ _id: ObjectId(2), name: "Alice" }
{ _id: ObjectId(2), name: "Charlie" }
Я упрощаю ObjectId (n), чтобы представить n
как временную метку по умолчанию, которую mon go включает в ObjectId.
Теперь у меня есть приложение, которое требует выборки людей с уникальными именами, показывая только те записи, которые были вставлены последними. Так что в конечном итоге приложению нужны только эти записи:
{ _id: ObjectId(2), name: "Bob" }
{ _id: ObjectId(2), name: "Alice" }
{ _id: ObjectId(2), name: "Charlie" }
Я не хочу иметь уникальный индекс для name
, потому что я действительно хочу хранить повторяющихся людей. Ограничение уникальности исходит из бизнес-логики приложения c, не имеющей отношения к коллекции.
Есть ли способ, которым я могу запросить mon go, чтобы напрямую получить эти результаты, или это logi c то, что я должен написать в моем приложении после получения всех записей? У меня мало опыта работы с mongoDB, поэтому может быть очевидное решение, о котором я не знаю.