猫鼬会找到与id数组的每个条目匹配的所有文档

时间:2020-01-15 13:33:19

标签: javascript node.js mongodb mongoose

我有一个像这样的MongoDB ID数组:

it('.post should work with data', function (done) { var app = express(); app.use(bodyParser()); app.post('/', function(req, res){ res.send(req.body.name); }); request(app) .post('/') .send({ name: 'tobi' }) .expect('tobi', done); })

我需要从数据库中推入与网络阵列的每个条目匹配的所有文档(完整对象)。

所以我想要一个新的,比如让peopleNetworks像这样:

networks = ["5e1cfabb61e9314617fe2db5", "5e1cfbbbe519704860d9a720", "5e1cfbdd4ab5514888b4c6eb"]

我试图使用以下网络数组过滤我的收藏集:

`peopleNetworks = [
  {
    "_id": "5e1cfabb61e9314617fe2db5",
    "name": "Facebook",
    "createdAt": "2020-01-13T23:18:19.593Z",
    "updatedAt": "2020-01-13T23:18:19.593Z",
    "__v": 0
  },
  {
    "_id": "5e1cfbbbe519704860d9a720",
    "name": "Instagram",
    "createdAt": "2020-01-13T23:22:35.057Z",
    "updatedAt": "2020-01-13T23:22:35.057Z",
    "__v": 0
  },
  {
    "_id": "5e1cfbdd4ab5514888b4c6eb",
    "name": "Vero",
    "createdAt": "2020-01-13T23:23:09.501Z",
    "updatedAt": "2020-01-14T00:00:05.458Z",
    "__v": 0
  }
]`

但这不起作用。

我认为执行此操作的正确方法是在.find()之后链接过滤器,但尝试时搞砸了。

2 个答案:

答案 0 :(得分:0)

您可以将mongodb的$ in运算符与find一起使用

const storedNetworks = await Network.find({"_id":{"$in":networks}});

答案 1 :(得分:0)

您应该使用$in运算符。像

await Network.find({ _id: { $in: networks } });

这应该返回您想要的文档,而您不必先获取所有文档然后进行过滤