【问题标题】:Mongoose: aggregation with $match by "_id.property"Mongoose:通过“_id.property”与 $match 聚合
【发布时间】:2013-06-16 11:36:37
【问题描述】:

在具有这种结构的文档的 mongo (2.4.x) 集合中:

db.col.insert({ "_id" : { "owner" : "john" }, "value" : 10 });
db.col.insert({ "_id" : { "owner" : "mary" }, "value" : 20 });

我正在使用 mongoose (3.5.4) 并尝试运行聚合管道但没有成功。这在 mongo 命令行客户端上运行良好:

> db.col.aggregate({ $match : { "_id.owner": "john" } });

{ "result" : [ { "_id" : { "owner" : "john" }, "value" : 10 } ], "ok" : 1 }

但是当我使用猫鼬时,它并没有按预期工作

Col.aggregate(
  { $match : { "_id.owner": "john" } },
  function(err, result) {
    console.log("ERR : " + err + " RES : " + JSON.stringify(result));
  }
);

ERR : null RES : []

这是我正在使用的猫鼬模式:

var Col = new Schema({
  _id: {
    owner: String
  },
  value: Number
});

我不得不说一个简单的Col.find({ "_id.owner": "john" }) 可以按预期工作。

我怎样才能让它工作?我无法修改文档的结构。

【问题讨论】:

    标签: node.js mongodb mongoose aggregation-framework


    【解决方案1】:

    由于我在比赛前添加了一个 $project,但我仍在寻找更简洁的解决方案:

    {
      $project: {
        "_id": 0,
        "owner": "$_id.owner",
        "value": 1
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      相关资源
      最近更新 更多