Meteor elemmatch与预期不符

时间:2016-02-22 14:20:43

标签: mongodb meteor

in shell / robomongo

db.mycol.find({_id:"jodi"},{
            "progress":{
                    $elemMatch:{
                            "status":"todo"
                    }
            }
        });

result enter image description here

这是我的发布

Meteor.publish('mycol', function() {
  if(!this.userId)
    return null;
  coli = Coli.find({clientId:this.userId});
  return coli;
});

和我的助手

Coli.find({_id:"jodi"},{
            "progress":{
                    $elemMatch:{
                            "status":"todo"
                    }
            }
        }).fetch()

来自控制台日志(流星)的结果result enter image description here

我只想要仅显示状态待办事项 不是全部 如果我在我的控制台(robomongo)上运行它的工作 但如果我在我的脚本上运行,所有数据都显示(不仅是状态待办事项)

和我的db

{
    "_id" : "jodi",
    "clientId" : "BdTw5TtipGkodGLNY",
    "project" : "jodi",
    "progress" : [ 
        {
            "_id" : "ewCzYjeid9G5vpqNy",
            "createdAt" : "2016-02-22T12:41:56+07:00",
            "status" : "todo",
            "title" : "jodi",
            "detail" : "jodi"
        }, 
        {
            "_id" : "ewCzYjeid9G5vpqsNy",
            "createdAt" : "2016-02-22T12:41:56+07:00",
            "status" : "doing",
            "title" : "jodi",
            "detail" : "jodi"
        }
    ]
}

我只想显示状态中的数据数组:todo 在shell中它可以工作,但在我的脚本中状态除了todo之外也出现了

2 个答案:

答案 0 :(得分:0)

试试这个:

Coli.find({_id:"jodi"},
          {"progress":{$elemMatch:{"status":"todo"}} },
          {fields:{"progress.$": 1}}
         ).fetch();

答案 1 :(得分:0)

谢谢大家 这是我的固定代码

Coli.find({
            "progress":{
                    $elemMatch:{
                            "status":"doing"
                    }
            }
        })