2016-06-03 3 views
1

Мне нужна помощь в том, как построить запрос MongoDB от драйвера C#. То, что я пытаюсь сделать, это datediff в milliseconds, а затем отфильтровать те результаты, в которых дат в миллисекундах greater or equal than an specific number.

Запрос MongoDB, который я использую в Монго оболочки:

db.getCollection('Coll').aggregate(
[  
    {$project : { 
     "dateInMillis" : {$subtract: [ new Date(), "$UpdateDate" ]},   
     "Param2": "$Param2", 
     "Param3": "$Param3"} 
    }, 
    {$match :{ dateInMillis : { $gte : 2662790910}}} 
], 
{ 
    allowDiskUse : true 
}); 

который был бы # выражение equivalente C?

Я пытался сделать запрос по-разному, без каких-либо результатов.

+0

mongo C# версия для драйверов: ... – profesor79

+0

Версия для печати mongo C#: 2.2.4 – GuTxO

ответ

0

Наконец-то я нашел способ сделать общий запрос через драйвер C# mongodb. Я не знаю, насколько эффективен этот способ, но он работает.

var project = new BsonDocument() 
{ 
    { 
     "$project", 
     new BsonDocument 
      { 
       {"dateInMillis", new BsonDocument 
            { 
             { 
              "$subtract", new BsonArray() {new BsonDateTime(DateTime.UtcNow), "$UpdateDate" } 
             } 
            } 
       }, 
       { 
        "Param2", "$Param2" 
       }, 
       { 
        "Param3", "$Param3" 
       }, 
       { 
        "_id", 0 
       } 
      } 
    } 
}; 
var match = new BsonDocument() 
{ 
    { 
     "$match", 
     new BsonDocument 
      { 
       { 
        "dateInMillis", 
        new BsonDocument { 
         { 
          "$gte", 
          intervalInMilliseconds 
         } 
        } 
       } 

      } 
    } 
}; 

var collection = db.GetCollection<CollClass>("Coll"); 

var pipeline = new[] { project, match }; 
var resultPipe = collection.Aggregate<CollClassRS>(pipeline);