[英]How do I filter an array of objects with MongoDB Object IDs based on another array of Object IDs?
我有一系列從 MongoDB 中提取的電影,名為movieList:
[
{
movie: {
_id: 5fde62aa0cec1598fda103ac,
title: 'Wander'
},
status: 2
},
{
movie: {
_id: 5fde62930cec1598fd9d426c,
title: 'Mulan'
},
status: 1
},
{
movie: {
_id: 5fde62a10cec1598fd9f9222,
title: 'Greenland'
},
status: 0
}
]
我有一組名為 removeMovies 的電影 Object ID(不是字符串):
[
5fde62a20cec1598fd9fa275,
5fde62a30cec1598fd9fec86,
5fde62a50cec1598fda034cf,
5fde62a50cec1598fda03f24,
5fde62930cec1598fd9d426c
]
我通常過濾的方式(如果這些是字符串或數字,而不是 Object ID)返回一個空數組:
const filteredMovieList = movieList.filter((movie) => {
return removeMovies.includes(movie.movie._id)
})
有任何想法嗎?
解決方案之一是將兩個 objectId 轉換為字符串,例如:
const filteredMovieList = movieList.filter((movie) => {
return removeMovies.filter(rmMovie => String(rmMovie) == String(movie._id)).length
== 0 ? false : true
})
我認為您可以首先使用toString
和 map 將 removeMovies 對象用於這些字符串:
const filteredMovieList = movieList.filter((movie) => {
return removeMovies
.map(movieId => movieId.toString())
.includes(movie.movie._id.toString())
})
仔細觀察https://docs.mongodb.com/manual/reference/method/ObjectId/ ,我認為您也可以使用str
屬性。
const filteredMovieList = movieList.filter((movie) => {
return removeMovies
.map(movieId => movieId.str)
.includes(movie.movie._id.str)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.