2

我现在面临一个问题,无法找到解决方案。我在每个文档的数组中有一个包含子文档的集合,我想为每个子文档检索一个文档。

举个例子解释起来会更简单。假设我有一个集合的“模式”:

{
    a: String,
    b: [String]
}

其中 a 和 b 都是必需的。此集合的文档如下所示:

{
    a : 'hey',
    b: ['me', 'you']
}

我想找到一种方法来进行不会返回此文档的猫鼬查询,但是这两个文档:

[{
    a: 'hey',
    b: 'me'
 },
 {
     a: 'hey',
     b: 'you'
 }]

那可能吗 ?

提前致谢。

PS:我知道一旦我用一个简单的 JS 函数检索了列表,我就可以做到这一点,但我迫不及待地想检索完整的列表以开始使用它。

4

1 回答 1

2

这正是$unwind聚合运算符所做的:

MyModel.aggregate({$unwind: '$b'}, function(err, result) { ... });

results得到一个如下所示的数组:

[ { _id: 524d5f6e1576f8a0f35fca8e, a: 'hey', b: 'me' },
  { _id: 524d5f6e1576f8a0f35fca8e, a: 'hey', b: 'you' } ]
于 2013-10-03T12:18:09.103 回答