从MongoDB monk中排除字段的结果

17

我想要从结果中排除一些字段。 我有如下代码:

users = db.select('users');

users.find( {}, { sort: { points:1 }, privateKey:0, publicKey:0}, function(err,data){      
  res.send(data);
});

我想从结果中排除私钥和公钥。 使用monk可以实现吗?

4个回答

28

你也可以像这样做:

users.find( {}, { sort: { points:1 }, fields : { privateKey:0, publicKey:0} },
  function(err,data){      
    res.send(data);
  }
);

6
根据文档,find方法的第一个参数是过滤器,第二个参数是投影。但你使用了排序,这将导致无法解释。你试图混淆投影和排序。排序应该在find和投影之后。
可以像这样编写投影:{ field1: <boolean>, field2: <boolean> ... } 注意:即使未在投影参数中明确声明返回该字段,find()方法始终包括_id字段。
 users.find({}, { privateKey: 0, publicKey: 0 }).sort({points: 1}).toArray(
           function (err, data) {
                      res.send(data);
             });

非常感谢您的回答 :) 真是太好了。 :) - Pikachu
这是不正确的,你需要插入父/顶级属性"fields" ..像这样: { fields: { privateKey: 0 } } 来声明它是一个投影。或者只使用第二个参数的字符串。检查文档中的示例: https://automattic.github.io/monk/docs/collection/find.html - bobmoff

2

对于我来说,我需要使用.project()方法:

const someFunction = async () => {

    const result = await users
        .find({}, { sort: { points: 1 })
        .project({ privateKey: 0, publicKey: 0});

};

1

这是对我来说有效的方法,用于排除_id字段。

const courseChapters = await db
        .collection("users")
        .find({}, { projection: { _id: 0 } })
        .toArray();

所以问题中的示例看起来会像这样。

 users.find(
  {},
  { projection: { points: 1, privateKey: 0, publicKey: 0 } },
  function (err, data) {
    res.send(data);
  }
);

请查看这个答案,它说根据您的驱动程序,您可能需要使用fields字段而不是projection


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接