mongodb聚合(合僧)未定义函数

mongodb aggregation (co-monk) undefined function

以下代码似乎不起作用,我收到未定义的函数。使用基于 mongodb 本机节点模块的 mongoskin 的 co-monk。

文档:

{
    "_id" : ObjectId("560c24b853b558856ef193a4"),
    "name" : "ирина",
    "pic" : "",
    "language" : ObjectId("560c24b853b558856ef193a2"),
    "cell" : 1,
    "local" : {
        "email" : "ирина@mail.com",
        "password" : "12345"
    },
    "sessions" : [
        {
            "id" : ObjectId("560c24b853b558856ef193a5")
        }
    ]
}

查询:

            var sessionSeen =
                yield users.aggregate([
                    {
                        $match: {
                            _id: myVarIdHere
                        }
                    },
                    {
                        $project: {
                            _id: 0,
                            data: {
                                $map: {
                                    input: '$sessions',
                                    as: 'sess',
                                    in : '$$sess.seen'
                                }
                            }
                        }
                    }
                ]);

seen 应该 return null 因为它还没有被设置。

Monks 文档有问题。一位网络英雄写道,.col 访问本机 mongodb 驱动程序,我可以在那里做事。然而,我必须再次将它包装在一个承诺中,不过没有问题。

var sessionSeen =
            yield new Promise(function (resolve, reject) {

                users.col.aggregate([
                        {
                            $match: {
                                '_id': new ObjectID.createFromHexString(socket._id)
                            }
                        },
                        {
                            $project: {
                                _id: 0,
                                data: {
                                    $map: {
                                        input: '$sessions',
                                        as: 'sess',
                                        in : '$$sess.seen'
                                    }
                                }
                            }
                        }
                    ],
                    function (err, res) {
                        console.log('err ' + err);
                        console.log('res ' + JSON.stringify(res));
                        if (err === null)
                            resolve(res);
                        reject(err);
                    });
            });