Node.js 聚合查询在mongodb中运行,而不是在mongoose中运行

Node.js 聚合查询在mongodb中运行,而不是在mongoose中运行,node.js,mongodb,express,mongoose,aggregation-framework,Node.js,Mongodb,Express,Mongoose,Aggregation Framework,我有一个集合myCollection,包含成员数组和位置数: { name : String, members: [{status : Number, memberId : {type: Schema.Types.ObjectId, ref: 'members'}], nbPlaces : Number } 我有这些数据 "_id" : ObjectId("5e83791eb49ab07a48e0282b") "members" : [ {

我有一个集合myCollection,包含成员数组和位置数:

{
   name : String,
   members: [{status : Number, memberId : {type: Schema.Types.ObjectId, ref: 'members'}],
   nbPlaces : Number
}
我有这些数据

"_id" : ObjectId("5e83791eb49ab07a48e0282b")
   "members" : [ 
        {
            "status" : 1,
            "_id" : ObjectId("5e83791eb49ab07a48e0282c"),
            "memberId" : ObjectId("5e7dbf5b257e6b18a62f2da9")
        }, 
        {
            "status" : 2,
            "_id" : ObjectId("5e837944b49ab07a48e0282d"),
            "memberId" : ObjectId("5e7de2dbe027f43adf678db8")
        }
    ],
  "nbPlaces": 5
我对由$addFields添加的字段进行$match匹配,但返回的结果是mongoDb而不是mongoose, 如何在猫鼬中获得结果?多谢各位

猫鼬版本:^5.9.4“


我可以用猫鼬得到这样的结果:

const mongoose=require(“mongoose”);
const ObjectId=mongoose.Types.ObjectId;
路由器.get(“/test”),异步(请求,res)=>{
const result=await myCollection.aggregate([
{
$项目:{
国家统计局成员:{
$size:{
$filter:{
输入:“$members”,
作为:“成员”,
条件:{$eq:[“$$member.status”,1]},
},
},
},
地点:1,,
},
},
{
$addFields:{
收费:{
$cond:{
如果:{$eq:[{$subtract:[“$nbPlaces”,“$nbMembers”]},0]},
那么,对,,
否则:错,
},
},
},
},
{$match:{{u id:ObjectId(“5e83791eb49ab07a48e0282b”),收费:false},
]);
res.send(结果);
});
结果如下:

[
    {
        "_id": "5e83791eb49ab07a48e0282b",
        "nbPlaces": 5,
        "nbMembers": 1,
        "charged": false
    }
]
请检查您的myCollection架构是否与您的数据匹配,我使用了以下选项:

const mongoose = require("mongoose");

const schema = new mongoose.Schema({
  name: String,
  members: [
    {
      status: Number,
      memberId: { type: mongoose.Schema.Types.ObjectId, ref: "members" },
    },
  ],
  nbPlaces: Number,
});

module.exports = mongoose.model("myCollection", schema);

您可以为成员添加成员架构代码和示例文档吗?上面的代码看起来并没有返回值或保存在任何变量中。感谢您的回答,它似乎是相同的架构和相同的查询,在删除myCollection中的所有数据后,它起作用了,@user2285831不客气,我想这回答了您的问题,p请考虑将其标记为答案。
const mongoose = require("mongoose");

const schema = new mongoose.Schema({
  name: String,
  members: [
    {
      status: Number,
      memberId: { type: mongoose.Schema.Types.ObjectId, ref: "members" },
    },
  ],
  nbPlaces: Number,
});

module.exports = mongoose.model("myCollection", schema);