1

假设您有装有物品的盒子。每个项目可能在多个盒子中,因此每个项目都有一个 id 数组,用于该项目所在的盒子。

childA= {...boxIds: ['000001', '000002', '000003']...}

在 mongodb 中,您可以说child.find({boxIds:'000002'})获取 childA 和所有其他孩子,其中 000002 在 boxIds 数组中。这是我在猫鼬(咖啡脚本)中尝试过的:

  data = boxIds: box._id
  Child.find data, (err, children) -> doSomething

我总是得到一个空的结果。我找不到问题还是猫鼬不支持这种类型的查询?

编辑

Child = new mongoose.Schema
  ...
  boxIds: Array
  ...

box._id 是普通的 mongodb id 字符串

MongoDB中的示例查询:db.child.find( {boxIds: '50bb5d10ba1e232401000002'} )

结果:......., "boxIds" : [ "50bb5d10ba1e232401000002" ], .....

编辑2

难道 _id 不是字符串?

4

1 回答 1

3

问题是这box._id是一个 ObjectId,但boxIds数组字段Child包含字符串。

试试这个:

data = boxIds: box._id.toString()
Child.find data, (err, children) -> doSomething

另一种选择是在模式中定义boxIds为字符串数组,然后 Mongoose 将为您进行必要的转换:

Child = new mongoose.Schema
  ...
  boxIds: [String]
  ...
于 2012-12-02T15:27:19.930 回答