Nodejs 从 Mongo 中获取不包括匹配字段数组值的提取值

Nodejs Get fetch values excluding matching field array value from Mongo

如何在 Nodejs 中进行查找以获取不包括给定 ID 的值。

{"_id": 
    {"$oid": "1"},  
    "image_name": "img1.jpg",  
    "price": 120,  
    "user": [{
        "$oid": "userid1"
    }],
    "category": [{
        "$oid": "cat1"
    }]
    "__v": 1
}
{"_id": 
    {"$oid": "2"},  
    "image_name": "img2.jpg",  
    "price": 120,  
    "user": [{
        "$oid": "userid2"
    }],
    "category": [{
        "$oid": "cat2"
    }]
    "__v": 1
}
{"_id": 
    {"$oid": "3"},  
    "image_name": "img3.jpg",  
    "price": 120,  
    "user": [{
        "$oid": "userid3"
    }],
    "category": [{
        "$oid": "cat3"
    }]
    "__v": 1
}

例如,如果用户 ID 为 2,我想排除 ID 为 2 的用户并获取所有其他数据。喜欢

{"_id": 
    {"$oid": "1"},  
    "image_name": "img1.jpg",  
    "price": 120,  
    "user": [{
        "$oid": "userid1"
    }],
    "category": [{
        "$oid": "cat1"
    }]
    "__v": 1
}
{"_id": 
    {"$oid": "3"},  
    "image_name": "img3.jpg",  
    "price": 120,  
    "user": [{
        "$oid": "userid3"
    }],
    "category": [{
        "$oid": "cat3"
    }]
    "__v": 1
}

同上。请帮忙。我尝试了 $expr, $not, $in 方法,但它返回一个错误,即

val[key] = val[key].map(v => _castExpression(v, schema, strictQuery)); TypeError: val[key].map 不是函数

编辑: 下面是我尝试并得到上述错误的代码

app.get("/get-images", (req, res) => {
image
    .find(
        {
        $expr: {
            $not: {
                $in: [{
                    _id: req.query.userId
                }]
            }
        }
    }
    )
    .populate("user")
    .populate("category")
    .then((img) => {
        res.status(200).send(img);
    });

});

试试这个

image.find({
  _id: { $ne: req.query.userId }
})

$ne会给你所有_id不等于给定值的文档。