mongo মডিউল
mongo-c-driver-চালিত MongoDB ক্লায়েন্ট। URI দিয়ে connect, db.collection-এ drill down, plain map দিয়ে CRUD। মেথডের নাম অফিসিয়াল MongoDB driver-এর মতই (camelCase) — তাই API পরিচিত মনে হবে।
import "mongo" as mongo;
var client = mongo.connect("mongodb://localhost:27017");
var users = client.db("myapp").collection("users");
users.insertOne({ name: "Alice", roles: ["admin"] });
var alice = users.findOne({ name: "Alice" });
print(alice.roles[0]); // admin
users.updateOne({ name: "Alice" }, { "$set": { roles: ["admin", "editor"] } });
users.deleteOne({ name: "Alice" });
client.close();
Module API
| ফাংশন | বর্ণনা |
|---|---|
mongo.connect(uri) → client | URI parse ও connect। |
mongo.version() → string | Client version। |
Client / db / collection
| ধাপ | বর্ণনা |
|---|---|
client.db(name) | একটি database বেছে নিন। |
client.collection(db_name, coll_name) | শর্টকাট। |
client.ping(db_name?) | Handshake force করে (default admin)। ব্যর্থ হলে throw। |
client.close() | Connection ড্রপ। |
db.collection(name) | একটি collection। |
db.drop() | পুরো database ড্রপ। |
Collection মেথড
| মেথড | ফেরত | বর্ণনা |
|---|---|---|
coll.find(filter, opts?) | list of maps | সব matching doc। opts-এ limit, skip, sort, projection দেওয়া যায়। |
coll.findOne(filter) | map | null | প্রথম match, না পেলে null। |
coll.insertOne(doc) | {acknowledged, insertedId} | একটি doc insert। _id না থাকলে generate হয়। |
coll.insertMany(docs) | {acknowledged, insertedCount, insertedIds} | Bulk insert। |
coll.updateOne(filter, update) | mongoc reply map | $set-স্টাইল update। |
coll.deleteOne(filter) | {deletedCount} | প্রথম match delete। |
coll.deleteMany(filter) | {deletedCount} | সব match delete। সব মুছতে {} দিন। |
coll.countDocuments(filter?) | number | Server-side count। Filter default {}। |
coll.distinct(field, filter?) | list | field-এর unique value-গুলো। |
coll.aggregate(pipeline, opts?) | list of maps | Aggregation pipeline চালায়। |
coll.drop() | null | Collection drop। |
উদাহরণ
// options সহ find
var top10 = users.find(
{ status: "active" },
{
projection: { name: 1, email: 1, _id: 0 },
sort: { created_at: -1 },
limit: 10
}
);
// $ দিয়ে শুরু operator-গুলো quote-এর ভেতরে
var adults = users.find({ age: { "$gte": 18 } });
// bulk insert
var r = users.insertMany([
{ name: "A", age: 21 },
{ name: "B", age: 35 }
]);
print(r.insertedCount); // 2
// distinct value
var roles = users.distinct("role");
// aggregation pipeline
var by_role = users.aggregate([
{ "$match": { status: "active" } },
{ "$group": { _id: "$role", n: { "$sum": 1 } } },
{ "$sort": { n: -1 } }
]);