[英]How to query an object inside an array by multiple value in mongoose (javascript)?
[英]how to query value inside of object array in mongoose
我正在嘗試獲取文檔,該文檔是'periods'數組的'from'中的'from'字段值。
我試過以下方法,但不起作用。 我怎樣才能?
periods = [{
from: 333,
to: 555
},
{
from: 666,
to: 777
}]
var eqbookschema = new Schema({
eq_dbId: String,
user_dbId: String,
from: Number,
to: Number,
timestamp: Number,
}, {collection: 'book'});
EQBook = mongoose.model('EQBook', eqbookschema)
EQBook.find({
eq_dbId: req.body.eq_dbId,
from: {$in: [periods.from]}
})
我嘗試過的查詢雖然存在,但只會返回空數組。
由於periods
是一個對象數組,因此您要根據每個元素的from
字段進行查找,因此需要首先對其進行映射:
let froms = periods.map(val => val.from);
然后用映射數組查找:
EQBook.find({
eq_dbId: req.body.eq_dbId,
from: {$in: froms}
})
要不就:
EQBook.find({
eq_dbId: req.body.eq_dbId,
from: {$in: periods.map(val => val.from)}
})
僅創建一個'from'值的數組
periodFrom = periods.map((elem)=>elem.from);
EQBook.find(
{eq_dbId: req.body.eq_dbId,from:{$in:periodFrom}}
)
你可以試試看
const ObjectId = require('mongodb').ObjectId;
let froms = periods.map(data => data.from);
EQBook.aggregate([
{
$match : {'eq_dbId': ObjectId(req.body.eq_dbId),'from':{$in:[periodFrom]}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.