Mongoose - 查询子文档,比较父元素和子元素

Mongoose - Query subdocument, compare elements in parent vs child

我有两个文件,buyerssubmission(提交是买家的子文件)。

mongoose.model('Buyer',{
    username: String,
    credit: Number,
    forms:[mongoose.model('Submission').schema]
});

mongoose.model('Submission',{
    title: String,
    bid: Number,
});

每个买家都有一个 credit 属性,每个 submission 都有一个出价属性。我想构建一个查询来搜索出价低于其 parent.credit

的任何提交

是否可以通过父子属性对比找到?

您无法使用普通查找查询比较 mongodb 中的两个字段(无论是否为子文档)(除非您 use the $where,但请注意它非常慢,因为它执行 javascript 每个文件)。

但是,聚合管道可以满足您的需求:

db.buyers.aggregate([
    {$unwind: "$forms"},
    {$project: {
        username : 1,
        credit : 1,
        forms : 1,
        lower : {"$cond" : [{$lt: [ '$forms.bid', '$credit']}, 1, 0]}
    }},
    {$match : {lower : 1}}
]);

这将为您提供出价低于信用的条目。