メインコンテンツへスキップ

Mongoose

このページでは、Prisma ORMとMongooseのAPIを比較します。MongooseからPrismaへの移行方法については、このガイドを参照してください。

単一オブジェクトの取得

Prisma ORM

const user = await prisma.user.findUnique({
where: {
id: 1,
},
})

Mongoose

const result = await User.findById(1)

単一オブジェクトの選択されたスカラーの取得

Prisma ORM

const user = await prisma.user.findUnique({
where: {
id: 1,
},
select: {
name: true,
},
})

Mongoose

const user = await User.findById(1).select(['name'])

関連の取得

Prisma ORM

const userWithPost = await prisma.user.findUnique({
where: {
id: 2,
},
include: {
post: true,
},
})

Mongoose

const userWithPost = await User.findById(2).populate('post')

具体的な値でフィルタリング

Prisma ORM

const posts = await prisma.post.findMany({
where: {
title: {
contains: 'Hello World',
},
},
})

Mongoose

const posts = await Post.find({
title: 'Hello World',
})

その他のフィルタリング条件

Prisma ORM

Prisma ORMは、現代のアプリケーション開発で一般的に使用される多くの追加フィルターを生成します。

Mongoose

MongooseはMongoDBクエリセレクターをフィルター条件として公開します。

リレーションフィルター

Prisma ORM

Prisma ORMでは、取得するリストのモデルだけでなく、そのモデルのリレーションにも適用される基準に基づいてリストをフィルタリングできます。

例えば、以下のクエリはタイトルに「Hello」を含む投稿を1つ以上持っているユーザーを返します

const posts = await prisma.user.findMany({
where: {
Post: {
some: {
title: {
contains: 'Hello',
},
},
},
},
})

Mongoose

Mongooseにはリレーションフィルター専用のAPIはありません。クエリによって返された結果をフィルタリングするための追加ステップを追加することで、同様の機能を得ることができます。

ページネーション

Prisma ORM

カーソル方式ページネーション

const page = prisma.post.findMany({
before: {
id: 242,
},
last: 20,
})

オフセットページネーション

const cc = prisma.post.findMany({
skip: 200,
first: 20,
})

Mongoose

const posts = await Post.find({
skip: 200,
limit: 20,
})

オブジェクトの作成

Prisma ORM

const user = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@prisma.io',
},
})

Mongoose

const user = await User.create({
name: 'Alice',
email: 'alice@prisma.io',
})

オブジェクトの更新

Prisma ORM

const user = await prisma.user.update({
data: {
name: 'Alicia',
},
where: {
id: 2,
},
})

Mongoose

const updatedUser = await User.findOneAndUpdate(
{ _id: 2 },
{
$set: {
name: 'Alicia',
},
}
)

オブジェクトの削除

Prisma ORM

const user = prisma.user.delete({
where: {
id: 10,
},
})

Mongoose

await User.deleteOne({ _id: 10 })

一括削除

Prisma ORM

const users = await prisma.user.deleteMany({
where: {
id: {
in: [1, 2, 6, 6, 22, 21, 25],
},
},
})

Mongoose

await User.deleteMany({ id: { $in: [1, 2, 6, 6, 22, 21, 25] } })

Prismaとつながる

Prismaの旅を続けるには、以下とつながりましょう 活発なコミュニティ。最新情報を入手し、参加し、他の開発者と協力しましょう

  • Xでフォロー アナウンス、ライブイベント、役立つヒントをチェックしましょう。
  • Discordに参加 質問したり、コミュニティと話したり、会話を通じて積極的なサポートを受けたりできます。
  • YouTubeで購読 チュートリアル、デモ、ストリームを視聴しましょう。
  • GitHubで貢献 リポジトリにスターを付けたり、問題を報告したり、問題に貢献したりすることで。
皆様のご参加を心より歓迎し、コミュニティの一員となっていただけることを楽しみにしております!

© . All rights reserved.