Node.js 无法通过mongoose包含和排除查询字段

Node.js 无法通过mongoose包含和排除查询字段,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一些模式,并进行如下查询: mongoose.model('mymodel').find({}, 'one -two -__v', function(err,docs){}); 我希望文档只返回字段“一”。始终忽略字段“2”和其他所有字段。 然后我得到以下错误: You cannot currently mix including and excluding fields. Contact us if this is an issue. 我正在动态生成字段字符串,以包含或排除所需的字段

我有一些模式,并进行如下查询:

mongoose.model('mymodel').find({}, 'one -two -__v', function(err,docs){});
我希望文档只返回字段“一”。始终忽略字段“2”和其他所有字段。 然后我得到以下错误:

You cannot currently mix including and excluding fields. Contact us if this is an issue.
我正在动态生成字段字符串,以包含或排除所需的字段


如何消除错误。

这实际上与猫鼬无关。这种限制存在于mongo本身

投影不能同时包含include和exclude规范,除非排除_id字段。在显式包含字段的投影中,_id字段是唯一可以显式排除的字段

您要么包括,要么排除,除了_id之外,您不能两者兼而有之

仅选择_id和一个

选择除两个字段外的所有字段

例外:仅选择一个没有_id的


这实际上与猫鼬无关。这种限制存在于mongo本身

投影不能同时包含include和exclude规范,除非排除_id字段。在显式包含字段的投影中,_id字段是唯一可以显式排除的字段

您要么包括,要么排除,除了_id之外,您不能两者兼而有之

仅选择_id和一个

选择除两个字段外的所有字段

例外:仅选择一个没有_id的


我正要提到这是一个MongoDB问题,但这是补充的。仍然值得一提的是,版本字段是特定于mongoose的,因此不能以这种方式排除。但是你可以具体说明使用聚合的字段。@NeilLunn,我不太清楚你的意思。如果你愿意的话,请随意编辑我的答案。我不想插手正确的答案,只是留个便条。重点是查看聚合管道的操作符。它比.find中的投影更具体。与$match运算符一起使用,最终得到更好版本的.find。特别是在where.aggregate返回一个游标的情况下。我刚要提到这是MongoDB的问题,但这是添加的。仍然值得一提的是,版本字段是特定于mongoose的,因此不能以这种方式排除。但是你可以具体说明使用聚合的字段。@NeilLunn,我不太清楚你的意思。如果你愿意的话,请随意编辑我的答案。我不想插手正确的答案,只是留个便条。重点是查看聚合管道的操作符。它比.find中的投影更具体。与$match运算符一起使用,最终得到更好版本的.find。特别是在where.aggregate返回游标的情况下。
'one'
'-two'
'one -_id'