Has anyone used the jsonSchema validator with the mongodb package? I’m hoping to implement something like what is demonstrated in the docs:
https://docs.mongodb.com/manual/core/schema-validation/
I’ve tried something like this:
Mongo.command(mongo_pid(), [createCollection: coll])
after looking over the mongodb source code, but so far, I’ve only succeeded in getting this message:
%Mongo.Error{code: 59, host: nil, message: "command failed: no such command: 'createCollection'"}
Figured it out. Anyone who needs to define $jsonSchema validation on their Mongo collections can issue a command like the following:
# Create the collection by inserting a record
Mongo.insert_one(mongo_pid(), "phones", %{"phone" => "888-555-1212", "name" => "Example"})
# Modify the collection
cmd = [
collMod: "phones",
validator: [
[
json_schema: %{
bson_type: "object",
required: ["phone"]
}
]
]
]
Mongo.command(mongo_pid(), cmd)
Remember: you can only use collMod
on an existing collection! Insert a document there (or maybe create an index?) to get the collection created so you can modify it.
Note: the above code uses the mongo_pid()
function to retrieve the proper process.
1 Like
command name is create not createCollection source
try this instead
iex(1)> Mongo.command(:mongo, %{create: "users"})
{:ok, %{"ok" => 1.0}}
1 Like