如何只有一个子文件的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