MongoDB是一个开源的文档型非关系型数据库,由于其高可扩展性和灵活性,在大数据领域中越来越受欢迎。在本文中,我们将讨论如何在MongoDB中创建表格以及基本的表格建构。
1. MongoDB中的表格概述
在MongoDB中,表格被称为集合(collection),是一个无结构的、动态的JSON文档集合。它不需要预先定义列(field)或列的数据类型,这意味着您可以轻松修改文档的结构而不必担心激增的数据维护成本。
2. 建立集合
要创建一个新的MongoDB集合,可以使用`db.createCollection()`方法。
2.1 基本语法
db.createCollection(name, options)
其中,`name`是集合名称,`options`是一个可选参数,可以指定集合的存储引擎和其他选项。
2.2 创建集合示例
创建一个名为`users`的集合,其中包含用户的姓名、年龄、电子邮件地址和电话号码:
db.createCollection("users",{
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "name", "age", "email", "phone" ],
properties: {
name: {
bsonType: "string",
description: "姓名必须是字符串,是必需的"
},
age: {
bsonType: "int",
minimum: 18,
maximum: 100,
description: "年龄必须是整数,必须大于18岁且小于100岁"
},
email: {
bsonType : "string",
pattern: "^\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}$",
description: "电子邮件格式不正确"
},
phone: {
bsonType: "string",
pattern: "^\\d{11}$",
description: "电话号码格式不正确,必须是11位数字"
}
}
}
},
validationAction: "error",
validationLevel: "strict"
})
上面的代码将创建一个名为`users`的集合,并定义了一个验证程序,用于验证插入的文档是否符合指定的模式。如果文档不符合模式,则会抛出一个错误。
3. 插入数据
要将数据插入MongoDB集合,可以使用`insert()`方法或`insertOne()`/`insertMany()`方法。其中,`insert()`方法被视为废弃,建议使用`insertOne()`/`insertMany()`代替。
3.1 插入文档
以下是使用`insertOne()`方法向`users`集合中插入一条文档的示例:
db.users.insertOne(
{
"name": "Alice",
"age": 25,
"email": "alice@example.com",
"phone": "12345678910"
}
);
3.2 插入多个文档
以下是使用`insertMany()`方法将多个文档插入`users`集合的示例:
db.users.insertMany([
{
"name": "Bob",
"age": 30,
"email": "bob@example.com",
"phone": "12345678911"
},
{
"name": "Charlie",
"age": 35,
"email": "charlie@example.com",
"phone": "12345678912"
},
]);
4. 查询文档
要查询MongoDB集合中的文档,可以使用`find()`方法。该方法返回一个游标对象,可以使用`forEach()`方法遍历查询结果。
4.1 查询所有文档
以下是使用`find()`方法查询`users`集合中的所有文档的示例:
db.users.find().forEach(function(doc){
printjson(doc);
});
4.2 条件查询
以下是使用`find()`方法查询`users`集合中年龄大于30岁的文档的示例:
db.users.find({ "age": { $gt: 30 } }).forEach(function(doc){
printjson(doc);
});
5. 更新文档
要更新MongoDB集合中的文档,可以使用`updateOne()`/`updateMany()`方法。以下是将`users`集合中年龄为30岁的文档的电子邮件地址更新为`bob_new@example.com`的示例:
db.users.updateOne(
{ "age": 30 },
{ $set: { "email": "bob_new@example.com" } }
);
6. 删除文档
要从MongoDB集合中删除文档,可以使用`deleteOne()`/`deleteMany()`方法。以下是删除`users`集合中年龄小于25岁的文档的示例:
db.users.deleteMany(
{ "age": { $lt: 25 } }
);
7. 结论
在本文中,我们讨论了MongoDB中的集合。我们看到它们是可以动态创建的,不需要预定义列或类型,使其灵活性和可扩展性增强。我们还看到MongoDB提供了丰富的查询、更新和删除API,使我们可以轻松管理MongoDB集合中的文档。