簡體   English   中英

如何根據另一個 Object ID 數組過濾具有 MongoDB Object ID 的對象數組?

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

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