Mongoose根据条件选择数组中的元素
我有一个简单的模式:Mongoose根据条件选择数组中的元素,mongoose,Mongoose,我有一个简单的模式: { bank: { transactions: [ { notify: Boolean } ] } } 我只想选择notify标志设置为true的事务, 我尝试了几种使用moongose的方法,但没有成功,例如: Bank.findById("58efbb1a88efbf2028d2f5a7")
{
bank: {
transactions: [
{
notify: Boolean
}
]
}
}
我只想选择notify标志设置为true的事务,
我尝试了几种使用moongose的方法,但没有成功,例如:
Bank.findById("58efbb1a88efbf2028d2f5a7")
.where("transactions.notify").equals(true)
.exec(function (err, tx) {
console.log(err);
console.log(res);
res.json(tx);
});
Bank.find({_id: "58efbb1a88efbf2028d2f5a7", "transactions": {$elemMatch : {"notify" : true}}},
function (err, txs) {
if (err) {
res.json(err);
} else {
res.json(txs);
}
});
使用moongose是否仍然可以执行此操作?使用聚合和:
当你说none起作用时,你的查询结果是什么?@i确定第一个返回一个空对象,第二个返回整个(银行)对象,如果它至少有一个notify设置为trueNope的事务,该事务返回整个数组,该事务从你在问题中发布的模型返回null,它应该可以查看哪些只返回
notify
设置为true
的事务。
Bank.aggregate([{
"$match": {
"_id": mongoose.Types.ObjectId("58efbb1a88efbf2028d2f5a7")
}
}, {
"$project": {
"transactions": {
"$filter": {
input: "$bank.transactions",
as: 'data',
cond: { "$eq": ["$$data.notify", true] }
}
}
}
}],
function(err, txs) {
if (err) {
res.json(err);
} else {
res.json(txs);
}
});
Bank.find({'_id': '58efbb1a88efbf2028d2f5a7', 'transactions.notify': true},
function (err, txs) {
if (err) {
res.json(err);
} else {
res.json(txs);
}
}
);