Struct MongoCollection
Represents a single collection inside a MongoDB.
All methods take arbitrary types for Bson arguments. serializeToBson() is implicitly called on
them before they are send to the database
. The following example shows some possible ways
to specify objects.
Constructors
Name | Description |
---|---|
this
|
|
this
|
Properties
Name | Type | Description |
---|---|---|
database
[get]
|
MongoDatabase |
|
name
[get]
|
string |
Methods
Name | Description |
---|---|
aggregate
|
Calculates aggregate values for the data in a collection.
|
count
|
Counts the results of the specified query expression.
|
drop
|
|
dropIndex
|
|
ensureIndex
|
Creates or updates an index. |
find
|
Queries the collection for existing documents. |
findAndModify
|
Combines a modify and find operation to a single atomic operation.
|
findAndModifyExt
|
Combines a modify and find operation to a single atomic operation with generic options support.
|
findOne
|
Queries the collection for existing documents. |
insert
|
Inserts new documents into the collection. |
remove
|
Removes documents from the collection. |
update
|
Performs an update operation on documents matching 'selector ', updating them with 'update '.
|
Example
import vibe .data .bson;
import vibe .data .json;
import vibe .db .mongo .mongo;
void test()
{
MongoClient client = connectMongoDB("127.0.0.1");
MongoCollection users = client .getCollection("myapp.users");
// canonical version using a Bson object
users .insert(Bson(["name": Bson("admin"), "password": Bson("secret")]));
// short version using a string[string] AA that is automatically
// serialized to Bson
users .insert(["name": "admin", "password": "secret"]);
// BSON specific types are also serialized automatically
auto uid = BsonObjectID .fromString("507f1f77bcf86cd799439011");
Bson usr = users .findOne(["_id": uid]);
// JSON is another possibility
Json jusr = parseJsonString(`{"name": "admin", "password": "secret"}`);
users .insert(jusr);
}
Example
Using the type system to define a document "schema"
import vibe .db .mongo .mongo;
import vibe .data .serialization : name;
import std .typecons : Nullable;
// Nested object within a "User" document
struct Address {
string name;
string street;
int zipCode;
}
// The document structure of the "myapp.users" collection
struct User {
@name("_id") BsonObjectID id; // represented as "_id" in the database
string loginName;
string password;
Address address;
}
void test()
{
MongoClient client = connectMongoDB("127.0.0.1");
MongoCollection users = client .getCollection("myapp.users");
// D values are automatically serialized to the internal BSON format
// upon insertion - see also vibe.data.serialization
User usr;
usr .id = BsonObjectID .generate();
usr .loginName = "admin";
usr .password = "secret";
users .insert(usr);
// find supports direct de-serialization of the returned documents
foreach (usr; users .find!User()) {
logInfo("User: %s", usr .loginName);
}
// the same goes for findOne
Nullable!User qusr = users .findOne!User(["_id": usr .id]);
if (!qusr .isNull)
logInfo("User: %s", qusr .loginName);
}
Authors
Sönke Ludwig
Copyright
© 2012-2014 RejectedSoftware e.K.
License
Subject to the terms of the MIT license, as written in the included LICENSE.txt file.