MongoDB操作详解:建库、增删改查与索引

需积分: 9 3 下载量 172 浏览量 更新于2024-09-14 收藏 192KB DOCX 举报
"MongoDB是NoSQL数据库的一种,它以其灵活性、高性能和易扩展性在处理大量非结构化数据时受到广泛应用。本文将对MongoDB的基本操作进行总结,包括数据库管理、集合操作以及查询方法等核心知识点。" MongoDB是一个分布式文档型数据库,它支持JSON格式的数据存储,适合处理大规模的半结构化和非结构化数据。在MongoDB中,数据以文档的形式存储在集合(Collections)中,而集合则存在于数据库(Databases)中。 ### 数据库操作 1. **use DATABASE_NAME**:这用于切换或创建数据库。如果指定的数据库不存在,MongoDB会自动创建它。例如,`use myDatabase`将切换到名为`myDatabase`的数据库。 2. **show dbs**:这个命令用来列出当前MongoDB实例上所有的数据库。如果数据库为空,它不会显示。 3. **db**:运行`db`命令可以查看当前正在使用的数据库。 4. **db.APP_HANSON.insert({“name”:”hanson”})**:这是向名为`APP_HANSON`的集合中插入一个文档。在MongoDB中,每个数据库至少需要有一个文档才能在数据库列表中显示。 5. **db.dropDatabase()**:删除当前选择的数据库,注意这是一个不可逆的操作。 6. **db.help()**:提供关于db对象的常用操作的帮助信息。 ### 集合操作 1. **showcollections/showtables**:这两个命令可以查看当前数据库中的所有集合。 2. **db.createCollection("student")**:创建名为`student`的新集合。 3. **db.COLLECTION_NAME.insert({…})**:向集合中插入文档。如果集合不存在,MongoDB会自动创建。插入时,MongoDB会为每个文档生成一个唯一的 `_id` 字段,通常是`ObjectId`类型。 4. `_id:ObjectId(4byte timestamp, 3byte machine id, 2byte process id, 3byte incrementer)`:`_id`字段的结构,包含了时间戳、机器标识、进程ID和自增计数器。 5. **集合插入示例**: - 单个文档插入:`db.student.insert({name:'Jerry', age:23, likes:['basketball','football','tennis']})` - 多个文档插入:`db.student.insert([{...}, {...}])` ### 查询操作 1. **db.COLLECTION_NAME.find()**:这是查询集合中所有文档的基础命令。 2. **特定条件查询**: - 查询`ID`为特定值的文档:`db.credit.find({'ID':34957028})` - 查询`ID`不等于特定值并只返回特定字段:`db.credit.find({'ID':{$ne:34957028}},{'DATE_RATIF':1,'STATUS':1})` MongoDB还提供了丰富的查询语法,如正则表达式匹配、范围查询、聚合操作、地理空间查询等,这些功能使得MongoDB在处理复杂数据查询时具有很高的灵活性。 除此之外,MongoDB还支持索引的创建和管理,这对于提高查询性能至关重要。可以使用`createIndex()`来创建索引,`db.collection.getIndexes()`来查看索引,以及`dropIndex()`来删除索引。索引可以基于一个或多个字段,单向(升序或降序)或复合。 MongoDB是一个强大的工具,尤其适用于需要快速处理和存储大量非结构化数据的应用场景。理解和掌握上述基本操作和查询技巧,能够帮助开发者有效地利用MongoDB来构建和维护高效的数据存储系统。