簡體   English   中英

如何在貓鼬中查詢對象數組內的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM