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
- `include`の使用
- Fluent API
const userWithPost = await prisma.user.findUnique({
where: {
id: 2,
},
include: {
post: true,
},
})
const userWithPost = await prisma.user
.findUnique({
where: {
id: 2,
},
})
.post()
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
- `create`の使用
- `save`の使用
const user = await User.create({
name: 'Alice',
email: 'alice@prisma.io',
})
const user = new User({
name: 'Alice',
email: 'alice@prisma.io',
})
await user.save()
オブジェクトの更新
Prisma ORM
const user = await prisma.user.update({
data: {
name: 'Alicia',
},
where: {
id: 2,
},
})
Mongoose
- `findOneAndUpdate`の使用
- `save`の使用
const updatedUser = await User.findOneAndUpdate(
{ _id: 2 },
{
$set: {
name: 'Alicia',
},
}
)
user.name = 'Alicia'
await user.save()
オブジェクトの削除
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で貢献 リポジトリにスターを付けたり、問題を報告したり、問題に貢献したりすることで。