Mongoose - 查询子文档,比较父元素和子元素
Mongoose - Query subdocument, compare elements in parent vs child
我有两个文件,buyers
和submission
(提交是买家的子文件)。
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}}
]);
这将为您提供出价低于信用的条目。
我有两个文件,buyers
和submission
(提交是买家的子文件)。
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}}
]);
这将为您提供出价低于信用的条目。