在mongoDB中,我有一个集合,其中字段'abc'是这样的对象数组:
'abc': [{"_id": new ObjectId("someId"), "name": "entity name"}]
我想创建聚合(不能是.find()),其中我将值传递给match _id属性这样的东西是行不通的
{ $match: { 'abc._id': { $in: ['someId', 'someId2']} }}
我尝试了很多方法,我在网上找到的,但没有工作。有人知道如何使用聚合函数吗?
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}))
1条答案
按热度按时间6yt4nkrj1#
首先,Aggregate接受一个数组。
**解决方案:**必须使用Mongo ObjectId Package id。