我正在尝试获取文档,该文档是'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]}
})
我尝试过的查询仅返回空数组,尽管存在。
答案 0 :(得分:1)
由于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)}
})
答案 1 :(得分:0)
仅创建一个'from'值的数组
periodFrom = periods.map((elem)=>elem.from);
EQBook.find(
{eq_dbId: req.body.eq_dbId,from:{$in:periodFrom}}
)
答案 2 :(得分:0)
您可以尝试一下。
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]}
}
])