直接从MongoDate对象获取“sec”属性

时间:2018-01-23 18:25:16

标签: mongodb mongodb-query

我正在从MongoDb查询中返回数据

 {
    "site": "def",
    "ip": "123.0.0.2",
    "context": "home",
    "uri": "could-bit",
    "t": {
        "sec": 1516731260,
        "usec": 742000
    }
 }'

我希望消除t Object属性,并仅保留“sec”属性。

我尝试用

这样做
$db->$collection->find(['t' => array('$gt' => $gte, '$lt' => $lte)], ['site' => true, 'ip' => true, 'uri' => true, 'context' => true, 't.sec' => true, '_id' => false])

但它不起作用

1 个答案:

答案 0 :(得分:1)

您应该使用聚合框架

db.collection.aggregate([
    {   $match: { t: { $gt: value1, $lt: value2 } },
    {
        $project: {
            _id: 1,
            site: 1,
            ip: 1,
            context: 1,
            uri: 1,
            sec: "$t.sec"
        }
    }
])

$match将完全符合您find中的过滤条件。