假设您有包含物品的盒子。每个项目可能位于多个框中,因此每个项目都有一个项目所在框的ID数组。
childA = {... boxIds:['000001','000002','000003'] ...}
在mongodb中,你可以说child.find({boxIds:'000002'})
来获得childA和000002在boxIds数组中的所有其他孩子。
这是我在mongoose(coffeescript)中尝试过的:
data = boxIds: box._id
Child.find data, (err, children) -> doSomething
我总是得到一个空洞的结果。我找不到问题,或者mongoose不支持这种类型的查询?
修改
Child = new mongoose.Schema
...
boxIds: Array
...
box._id是正常的mongodb id字符串
mongodb中的示例查询:db.child.find( {boxIds: '50bb5d10ba1e232401000002'} )
结果:......., "boxIds" : [ "50bb5d10ba1e232401000002" ], .....
EDIT2
可能是_id不是字符串吗?
答案 0 :(得分:3)
问题是box._id
是一个ObjectId,但boxIds
的{{1}}数组字段包含字符串。
请改为尝试:
Child
另一种选择是将data = boxIds: box._id.toString()
Child.find data, (err, children) -> doSomething
定义为模式中的字符串数组,然后Mongoose将为您进行必要的转换:
boxIds