ASchema={item:[BSchema]};
ASchema.findOne({item._id=xx})
它获取了一个BSchema数组,document.item是一个数组。如何只获得一个_id是xx的项目?
答案 0 :(得分:5)
您希望使用查询投影的positional $
运算符只返回匹配的数组元素。对于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
字段之外,您不能混合包含和排除。
因此,您必须指定使用投影时要显示的所有字段。
另请参阅mongoose文档中的.select()
。
答案 1 :(得分:1)
我认为您的查询语法错误。尝试:
ASchema.findOne({'item._id': xx})
此链接有助于更多示例:http://mongoosejs.com/docs/queries.html