Closed2

PrismaはGeolocationのSearchに未対応なのでmongodb側で対応するメモ

sarutabikosarutabiko

testSpotのモデルを用意して検索を行う.

  1. prismaのschemaに下記を定義
type LocationCoordinate {
  type        String    @default("Point")
  coordinates Decimal[]
}

model TestSpot {
  id      String             @id @default(auto()) @map("_id") @db.ObjectId
  loc     LocationCoordinate
  title   String?
  created DateTime?          @default(now())
  score   Int
}

  1. 上記をもとにprismaを更新.
npx prisma generate
npx prisma db push 
  1. mongoshでcreateIndex
use DBの名前
db.testSpot.createIndex( { loc : "2dsphere" } )
  1. データを追加. coordinatesの中身は、lng, lotの順で入れること.

  2. Prismaの検索.

    const spot = await prisma.testSpot.findRaw({
      filter: {
        loc: {
          $geoWithin: {
            $centerSphere: [[139.7389315, 35.6291115], 1 / 1.6 / 3963.2],
          },
        },
      },
    });

以上.

このスクラップは2023/05/24にクローズされました