流星集合选择WHERE

时间:2015-08-28 20:39:15

标签: mongodb meteor

我正在尝试查询字段等于某个值的mongo db。

db.votes.find( { "userID": "a6MtLKmDYbiKXccXC" }, { name: 1 } );

返回我在mongo shell中需要的内容。

当我在我的javascript中尝试以下操作时,它返回一个空数组。

var seen = Votes.find({ "userID": "a6MtLKmDYbiKXccXC" }, { name: 1 }).fetch();


Meteor.publish("votes", function(args) {
        var sub = this;

        var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;

        var pipeline = [
          { "$group": {
            "_id": "$name",
            "likes": { "$sum": { "$cond": [{ "$eq": [ "$vote", 1 ] },1,0] } },
            "dislikes": { "$sum": { "$cond": [{ "$eq": [ "$vote", 2 ] },1,0] } },
            "total": { "$sum": { "$cond": [{ "$eq": [ "$vote", 1 ] },1,-1] } }
          }},
          { "$sort": { "total": -1, "_id": 1 } }

        ];

        db.collection("votes").aggregate(
          pipeline,
          Meteor.bindEnvironment(
            function(err, result) {
              _.each(result, function(e) {
                e.name = e._id;
                delete e._id;

                sub.added("cardStore",Random.id(), e);

              });
              sub.ready();
            },
            function(error) {
              Meteor._debug( "error running: " + error);
            }
          )
        );
    }); 

1 个答案:

答案 0 :(得分:1)

您使用的是自动发布套餐吗?如果没有,您需要在客户端使用发布方法服务器端和相应的订阅调用,以确保您拥有运行此查询所需的数据。

Meteor Publish and Subscribe Documentation

我建议使用 msavin:mongol 包来调试浏览器中的数据和订阅。

旁注:如果您打算使用1的集合调用fetch,则可以使用findOne作为简写。

var seen = Votes.findOne({ "userID": "a6MtLKmDYbiKXccXC" }, { name: 1 });