Javascript 在mongo/meteor中查找和过滤阵列元素

Javascript 在mongo/meteor中查找和过滤阵列元素,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我有一些这样的文件: { _id: "exampleid", email: "ex@example.pt", sites:[ { _id: "site1", user: "user1", pass: "pass1", info: "info1", date: "date1" }, { _id: "site2", user: "user2", pass: "pass2

我有一些这样的文件:

{
  _id: "exampleid",
  email: "ex@example.pt",
  sites:[
    {
      _id: "site1",
      user: "user1",
      pass: "pass1",
      info: "info1",
      date: "date1"
    },
    {
      _id: "site2",
      user: "user2",
      pass: "pass2",
      info: "info2",
      date: "date2"
    }
  ]
}
我想执行一个查询,返回“site1”中的所有文档,但只返回该站点的字段_id、user、info和date,因此我执行了以下查询:

collection.find({ "sites._id": "site2" },{ fields: { "sites.$": 1 } });
因此,基本上我不希望其他站点被返回,但我也不希望该站点的通行证被返回,我尝试了以下方法:

collection.find({ "sites._id": "site2" },{ fields: { "sites.$.pass": 0 } });

但是它说我不能用位置运算符排除数组元素,所以我需要知道如何从结果中删除“pass”字段,以便我可以返回所有仍然在光标中但没有pass字段的文档。

您需要在聚合框架中使用
$filter
$map
。这意味着这必须是服务器端代码,而不是从浏览器运行。标准投影不允许对数组中的元素进行这种修改。无论如何,我都在服务器端运行这段代码,所以我会尝试一下,谢谢