Mongosh基本语法
以下是一些常用的
mongosh语法,涵盖了数据库操作、集合操作、文档操作等方面:
一、数据库操作
1. 显示所有数据库
1
show dbs;
此命令会列出 MongoDB 服务器上的所有数据库。
2. 切换数据库
1
use <databaseName>;
将 <databaseName> 替换为想要切换到的数据库名称。如果数据库不存在,mongosh 不会立即创建它,而是向该数据库插入数据时自动创建。
3. 查看当前数据库
1
db;
此命令会显示当前正在使用的数据库。
二、集合操作
1. 显示当前数据库中的所有集合
1
show collections;
该命令会列出当前数据库中的所有集合。
2. 创建集合
1
db.createCollection('<collectionName>');
将 <collectionName> 替换为想要创建的集合名称。
3. 删除集合
1
db.<collectionName>.drop();
将 <collectionName> 替换为想要删除的集合名称。此操作会删除整个集合,包括其中的所有文档、索引和元数据。
三、文档操作
1. 插入文档
1
2
3
4
5
6
7
8
// 插入单个文档
db.<collectionName>.insertOne({ key1: 'value1', key2: 'value2' });
// 插入多个文档
db.<collectionName>.insertMany([
{ key1: 'value1', key2: 'value2' },
{ key1: 'value3', key2: 'value4' }
]);
将 <collectionName> 替换为想要操作的集合名称。insertOne 用于插入单个文档,insertMany 用于插入多个文档。
2. 查询文档
1
2
3
4
5
// 查询集合中的所有文档
db.<collectionName>.find();
// 根据条件查询文档
db.<collectionName>.find({ key1: 'value1' });
find() 方法用于查询文档。如果不提供查询条件(即 {}),则会返回集合中的所有文档;如果提供了条件,如 { key1: 'value1' },则会返回满足该条件的文档。
查询 oid 的语句
查询框中的内容:
1
2
3
{
"_id": NumberLong("7416000760238506212")
}
模糊匹配string的语句
要实现对_id字段的模糊匹配(以"000300000000175515265814"开头),可以使用正则表达式来实现。
查询框中的内容:
1
2
3
{
"_id": { "$regex": "^000200000000164100794913" }
}
3. 更新文档
更新单个文档
1
2
3
4
5
6
7
8
9
10
11
// 更新单个文档
db.<collectionName>.updateOne(
{ key1: 'value1' },
{ $set: { key2: 'newValue2' } }
);
// 更新多个文档
db.<collectionName>.updateMany(
{ key1: 'value1' },
{ $set: { key2: 'newValue2' } }
);
updateOne 会更新满足条件的第一个文档,而 updateMany 会更新满足条件的所有文档。{ $set: { key2: 'newValue2' } } 是更新操作,使用 $set 操作符来更新指定字段的值。
替换 OSS 中指定 “_id” 的录像内容:
1
2
3
4
5
6
7
8
9
10
11
db.getSiblingDB("anchorlib").getCollection("lobj2024").updateOne(
{ 7416000760238506212
"_id": NumberLong("7416000760238506212")
},
{
$set: {
"content": BinData(0, "PD94bWwgdmVyvdW5kPg==")
}
}
);
4. 删除文档
1
2
3
4
5
// 删除单个文档
db.<collectionName>.deleteOne({ key1: 'value1' });
// 删除多个文档
db.<collectionName>.deleteMany({ key1: 'value1' });
deleteOne 会删除满足条件的第一个文档,deleteMany 会删除满足条件的所有文档。
四、索引操作
1. 创建索引
1
db.<collectionName>.createIndex({ key1: 1 });
此命令会为 <collectionName> 集合中的 key1 字段创建一个升序索引。将 1 替换为 -1 可创建降序索引。
2. 查看集合的索引
1
db.<collectionName>.getIndexes();
此命令会列出 <collectionName> 集合的所有索引。
五、聚合操作
1
2
3
4
db.<collectionName>.aggregate([
{ $match: { key1: 'value1' } },
{ $group: { _id: '$key2', count: { $sum: 1 } } }
]);
aggregate 方法允许使用聚合管道对集合中的数据进行复杂的处理。在上述示例中,$match 阶段筛选出 key1 等于 value1 的文档,$group 阶段根据 key2 对文档进行分组,并计算每组的文档数量。
六、其他操作
1. 统计集合中的文档数量
1
db.<collectionName>.countDocuments();
此命令会统计 <collectionName> 集合中的文档数量。
2. 评估查询性能
1
db.<collectionName>.explain().find({ key1: 'value1' });
explain() 方法可用于评估 find 查询的性能,帮助优化查询操作。
使用说明:
- 在使用
mongosh时,确保已经连接到 MongoDB 服务器。可在命令行中输入mongosh来启动mongosh会话,然后输入相应的命令进行操作。 - 对于需要替换的部分,如
<databaseName>或<collectionName>,请根据实际情况进行替换。 - 许多操作都可以添加更复杂的条件或使用更高级的操作符,如
$gt(大于)、$lt(小于)、$in(在集合中)等。例如:1
db.<collectionName>.find({ key1: { $gt: 10 } });
该查询会返回
key1大于 10 的文档。
其它
将字段 userid 的所有内容种类列出来:
1
2
var disid = db.testModelSingle.distinct('userid')
printjson(disid)
清空一个集合:
1
db.testModelSingle.deleteMany({})
查询数据库占用体积:
1
2
3
4
5
6
7
8
9
10
11
// 首先,切换到想要操作的数据库
use yourDatabaseName;
// 假设要查看的集合名为 yourCollectionName
var dataSize = db.yourCollectionName.dataSize(); // 计算集合中数据的大小,返回结果以字节为单位
var indexSize = db.yourCollectionName.totalIndexSize(); // 计算集合中索引的大小
var totalSize = db.collection.totalSize(); // 集合及其所有索引所占用的总磁盘空间大小
// 函数用于将结果输出,显示集合的数据大小和索引大小。
print("Data Size: " + dataSize + " bytes");
print("Index Size: " + indexSize + " bytes");