Mongooseで既存コレクションにアクセスする方法 (日本語)
Mongooseは、Node.jsでMongoDBと対話するためのオブジェクト指向モデリングツールです。既存のコレクションにアクセスするには、以下の手順に従います。
Mongooseのインポートと接続
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/yourDatabaseName', {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log('MongoDB connected'))
.catch(err => console .error(err));
mongoose.con nect
でMongoDBサーバーに接続します。yourDatabaseName
は、接続したいデータベースの名前です。
モデルの定義
const yourSchema = new mongoose.Schema({
// 既存コレクションのスキーマを定義
name: String,
age: Number
});
const YourModel = mongoose.model('YourCollectionName', yourSchema);
mongoose.Schema
を使って、既存コレクションのスキーマを定義します。YourCollectionName
は、既存コレクションの名前です。
コレクションへのアクセスと操作
YourModel.find()
.then(docs => {
console.log(docs); // コレクション内のすべてのドキュメントをログ出力
})
.catch(err => console.error(err));
YourModel.deleteOne({条件})
で、特定の条件を満たすドキュメントを削除します。YourModel.create(data)
で、新しいドキュメントを作成します。YourModel.findById(id)
で、指定されたIDのドキュメントを取得します。YourModel.find()
で、コレクション内のすべてのドキュメントを取得します。
例
// 既存のコレクション "users" にアクセスして、すべてのユーザーを取得
YourModel.find()
.then(users => {
console.log(users);
})
.catch(err => console.error(err));
注意
- 既存のコレクションのスキーマとモデルの定義が一致していることを確認してください。
- コレクションが存在しない場合は、Mongooseは自動的に作成します。
例1: 全てのドキュメントを取得
YourModel.find()
.then(docs => {
console.log(docs); // コレクション内のすべてのドキュメントをログ出力
})
.catch(err => console.error(err));
例2: 特定の条件を満たすドキュメントを1つ取得
mongoose.connection.dbを使用
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/yourDatabaseName')
.then(() => {
const db = mongoose.connection.db;
const collection = db.collection('YourCollectionName');
collection.find().toArray((err, docs) => {
if (err) throw err;
console.log(docs); // コレクション内のすべてのドキュメントをログ出力
});
})
.catch(err => console.error(err));
collection.find().toArray
を使用して、コレクション内のすべてのドキュメントを取得します。db.collection
を使用して、コレクションオブジェクトを取得します。mongoose.connection.db
を使用して、データベースオブジェクトを取得します。
mongoose.Model.aggregateを使用
YourModel.aggregate([
// アグリゲーションパイプラインを定義
{ $match: { name: 'John' } },
{ $project: { name: 1, age: 1 } }
])
.then(docs => {
console.log(docs); // 名前が "John" のドキュメントを、指定されたフィールドのみを投影してログ出力
})
.catch(err => console.error(err));
$match
、$project
などのアグリゲーションステージを使用して、ドキュメントをフィルタリング、投影、グループ化、ソートなどの操作を行います。mongoose.Model.aggregate
を使用して、アグリゲーションパイプラインを定義し、ドキュメントを処理します。
YourModel.distinct('name')
.then(names => {
console.log(names); // コレクション内のすべてのユニークな名前をログ出力
})
.catch(err => console.error(err));
mongoose.Model.distinct
を使用して、指定されたフィールドのユニークな値を取得します。
mongoose.Model.countDocumentsを使用
YourModel.countDocuments({ age: { $gt: 30 } })
.then(count => {
console.log(count); // 年齢が30以上のドキュメントの数をログ出力
})
.catch(err => console.error(err));
mongoose.Model.countDocuments
を使用して、特定の条件を満たすドキュメントの数を取得します。
mongodb node.js express