2016-07-13 109 views
0

我想在aggegration中這樣過濾。這是一個貓鼬查詢的例子。我想在一個合併中做同樣的事情。我想要做的就是2016-06-01T22之間的所有測量:和2016-06-02T22 46Z:52 52:46Z和其他值

Measurement 
    .find({}) 
    .or([{ 
    'date': { 
     '$gte': ISODate('2016-06-01T22:52:46Z'), 
     '$lte': ISODate('2016-06-02T22:52:46Z') 
    } 
    }, { 
    'date': { 
     '$gte': ISODate('2016-06-10T22:52:46Z'), 
     '$lte': ISODate('2016-06-11T22:52:46Z') 
    } 
    }, { 
    'date': { 
     '$gte': ISODate('2016-06-14T22:52:46Z'), 
     '$lte': ISODate('2016-06-15T22:52:46Z') 
    } 
    }, { 
    'date': { 
     '$gte': ISODate('2016-06-26T22:52:46Z'), 
     '$lte': ISODate('2016-06-27T22:52:46Z') 
    } 
    }]) 
    .exec(); 

這是我嘗試過,但事實並非如此做同樣的工作。 IDE說公共密鑰'date'

db.measurements.aggregate([{ 
    $match: { 
    $or: [{ 
     date: { 
     '$gte': ISODate('2016-06-01T22:52:46Z'), 
     '$lte': ISODate('2016-06-02T22:52:46Z') 
     }, 
     date: { 
     '$gte': ISODate('2016-06-10T22:52:46Z'), 
     '$lte': ISODate('2016-06-11T22:52:46Z') 
     }, 
     date: { 
     '$gte': ISODate('2016-06-14T22:52:46Z'), 
     '$lte': ISODate('2016-06-15T22:52:46Z') 
     }, 
     date: { 
     '$gte': ISODate('2016-06-26T22:52:46Z'), 
     '$lte': ISODate('2016-06-27T22:52:46Z') 
     } 
    }] 
    } 
}]); 

回答

1

你有一些數據的例子嗎? 試試這個代碼:

db.measurements.aggregate([{ 
    $match: { 
    $or: [ 
    { date: { 
     '$gte': ISODate('2016-06-01T22:52:46Z'), 
     '$lte': ISODate('2016-06-02T22:52:46Z') 
     }}, 
     { date: { 
     '$gte': ISODate('2016-06-10T22:52:46Z'), 
     '$lte': ISODate('2016-06-11T22:52:46Z') 
     }}, 
     { date: { 
     '$gte': ISODate('2016-06-14T22:52:46Z'), 
     '$lte': ISODate('2016-06-15T22:52:46Z') 
     }}, 
     { date: { 
     '$gte': ISODate('2016-06-26T22:52:46Z'), 
     '$lte': ISODate('2016-06-27T22:52:46Z') 
     }} 
    ] 
    } 
}]); 
+0

非常感謝你的工作! – Tim

+0

我的表揚:以MongoDb資源爲例。它是免費的,非常有幫助。 https://university.mongodb.com/ –