Вы можете использовать структуру агрегации. У вас есть куча записей:
db.a.find();
{ "_id" : 1, "n" : 1, "d" : ISODate("2012-01-01T00:00:00Z") }
{ "_id" : 2, "n" : 1, "d" : ISODate("2012-01-12T00:00:00Z") }
{ "_id" : 3, "n" : 1, "d" : ISODate("2012-02-04T00:00:00Z") }
{ "_id" : 4, "n" : 2, "d" : ISODate("2012-01-22T00:00:00Z") }
{ "_id" : 5, "n" : 3, "d" : ISODate("2012-01-07T00:00:00Z") }
{ "_id" : 6, "n" : 2, "d" : ISODate("2011-12-31T00:00:00Z") }
Вы бы тогда просто группа, а Макс:
> db.a.aggregate({$group:{_id:"$n",latest:{$max:"$d"}}})
Что дает вам запись для каждого п с последней отметкой времени этой записи:
> db.a.aggregate({$group:{_id:"$n",latest:{$max:"$d"}}})
{
"result" : [
{
"_id" : 3,
"latest" : ISODate("2012-01-07T00:00:00Z")
},
{
"_id" : 2,
"latest" : ISODate("2012-01-22T00:00:00Z")
},
{
"_id" : 1,
"latest" : ISODate("2012-02-04T00:00:00Z")
}
],
"ok" : 1
}
Я попробовал два одного queries.After я выполнил внутренний запрос, затем повторил результат, чтобы ** запросить всю коллекцию ** с предложением where: a. [TimeStamp] = b. [TimeStamp] и b.ExtNo = a.ExtNo ". Но коллекция иметь ** два миллиона документов **, хотя я добавил индексы, он все еще очень медленный **. –
Какие индексы вы создали? – WiredPrairie
(Почему вы перешли на MongoDB?) – WiredPrairie