2013-02-17 2 views
0

Я перенес свою базу данных SQL Server в MongoDB. Теперь у меня есть problerm.Как реализовать это в MongoDB?

select * from AgentStatus a, 
(select Max(TimeStamp) as TimeStamp,ExtNo 
from AgentStatus 
group by Extno) b 
where a.[TimeStamp] = b.[TimeStamp] and b.ExtNo = a.ExtNo 

Если мы используем RMDB, это просто, но как выполнить запрос, как это в MongoDB? Или я должен изменить схему? И Как?

Любая помощь? Спасибо!

+0

Я попробовал два одного queries.After я выполнил внутренний запрос, затем повторил результат, чтобы ** запросить всю коллекцию ** с предложением where: a. [TimeStamp] = b. [TimeStamp] и b.ExtNo = a.ExtNo ". Но коллекция иметь ** два миллиона документов **, хотя я добавил индексы, он все еще очень медленный **. –

+0

Какие индексы вы создали? – WiredPrairie

+0

(Почему вы перешли на MongoDB?) – WiredPrairie

ответ

0

Вы можете использовать структуру агрегации. У вас есть куча записей:

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 
} 
+0

Это ответ [мой последний вопрос] (http://stackoverflow.com/questions/14917362/mongodb-aggregation-using-official-c-sharp-driver)? Но все равно спасибо! :) –

Смежные вопросы