[英]Mongoose query on array returning the complete document
我正在制作一個 node.js 應用程序,我正在嘗試使用 mongoose 查詢一個數組,並且我正在返回完整的未過濾文檔。 該集合存儲具有以下數據的單個文檔(這也是我在執行查詢后收到的數據):
{
"_id": {
"$oid": "60c0900f619f89f6943efbfd"
},
"milestones": [{
"id": "1",
"name": "5 Friends",
"description": "refer 5 friends to get 100 GroCash!",
"isActive": true,
"reward": 100,
"condition": 5
}, {
"id": "2",
"name": "7 Friends",
"description": "refer 7 friends to get 100 GroCash!",
"isActive": true,
"reward": 150,
"condition": 7
}, {
"id": "3",
"name": "5 Friends",
"description": "refer 5 friends to get 100 GroCash!",
"isActive": true,
"reward": 550,
"condition": 5
}],
"newUserReward": 50,
"refreeReward": 50
}
我正在運行的查詢是: incentiveModel.find({'milestones.isActive':true,'milestones.condition':5})
我希望它返回以下數據:
{
"_id": {
"$oid": "60c0900f619f89f6943efbfd"
},
"milestones": [{
"id": "1",
"name": "5 Friends",
"description": "refer 5 friends to get 100 GroCash!",
"isActive": true,
"reward": 100,
"condition": 5
}, {
"id": "3",
"name": "5 Friends",
"description": "refer 5 friends to get 100 GroCash!",
"isActive": true,
"reward": 550,
"condition": 5
}],
"newUserReward": 50,
"refreeReward": 50
}
我已經嘗試過$project
但仍然沒有幫助。
mongoose 架構是:
const milestone = new Schema({
id:{
type:String,
required:true,
default:mongoose.Types.ObjectId()
},
name:{
type:String,
required:true,
default:''
},
description:{
type:String,
required:true,
default:''
},
isActive:{
type:Boolean,
required:true,
default:false
},
condition:{
type:Number,
required:true,
default:null
},
reward:{
type:Number,
required:true,
default:0
}
})
export const incentiveScema = new Schema({
milestones:{
type:[milestone]
},
newUserReward:{
type:Number,
default:0
},
refreeReward:{
type:Number,
default:0
}
})
提前致謝!
await incentiveModel.aggregate([
{
$unwind:'$milestones'
}
{
$match:{
$and:[{'milestones.isActive':true},{'milestones.condition':5}]
}
])
參考下面這個例子..
可能您可以將aggregate
與$addFields
使用,您可以在其上過濾掉數據。 以下是相同的查詢。 如需更多參考,請通過此鏈接go 。
檢查示例示例
db.collection.aggregate([
{
$addFields: {
"milestones": {
$filter: {
input: "$milestones",
as: "milestones",
cond: {
$and: [
{
$eq: [
"$$milestones.isActive",
true
]
},
{
$eq: [
"$$milestones.condition",
5
]
}
]
}
}
}
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.