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

时间:2015-02-01 03:21:48

标签: node.js mongodb mongoose

我有两个文档buyerssubmission(提交的是买方的子文档)。

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

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

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

的任何提交

是否可以根据父子属性的比较找到?

1 个答案:

答案 0 :(得分:2)

您无法使用普通查找查询比较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}}
]);

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