NodeJS MongoDB聚合查询中对象数组的匹配属性

e1xvtsh3  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(123)

在mongoDB中,我有一个集合,其中字段'abc'是这样的对象数组:

'abc': [{"_id": new ObjectId("someId"), "name": "entity name"}]

我想创建聚合(不能是.find()),其中我将值传递给match _id属性
这样的东西是行不通的

{ $match: { 'abc._id': { $in: ['someId', 'someId2']} }}

我尝试了很多方法,我在网上找到的,但没有工作。
有人知道如何使用聚合函数吗?

6yt4nkrj

6yt4nkrj1#

首先,Aggregate接受一个数组。

**解决方案:**必须使用Mongo ObjectId Package id。

const mongoose = require('mongoose')
const ObjectId = mongoose.Schema.Types.ObjectId
const ids = ['someId1', 'someId2'].map(id => ObjectId(id))
const pipeline = [{$match: {_id: {$in: ids }}}]

<your model>.aggregate(pipeline, (err, docs) => console.log({err, docs}))

相关问题