如何只有一个子文件的mongoose项目?

ASchema={item:[BSchema]}; ASchema.findOne({item._id=xx}) 

它得到一个BSchema数组,document.item是一个数组。 如何获得只有一个_id是xx的项目?

你希望使用查询投影的位置$运算符只返回匹配的数组元素。 对于mongoose,你可以这样做:

 ASchema.findOne({"item._id": itemId},"item.$",function(err,doc) { console.log( doc ); }); 

或者在一个对象中配对:

 ASchema.findOne({"item._id": itemId},{ "item.$": 1 },function(err,doc) { console.log( doc ); }); 

Mongoose支持使用诸如“-fieldname”之类的字段删除选项的简写语法,它与{ "fieldname": 0 } 。 但是,除了_id字段外,您不能混合包含和排除。

因此,您必须指定使用投影时要显示的所有字段。

另请参阅.select()文档中的.select()

我认为你的查询语法是错误的。 尝试:

 ASchema.findOne({'item._id': xx}) 

这个链接有助于更多的例子: http : //mongoosejs.com/docs/queries.html