mongodb基本语法

查询
where 查询:

db.getCollection("xxxx").find({"id":NumberLong('11111111111')}).limit(10)

查询表行数

db.getCollection("xxxx").count()

查询某age和sex列,过滤条件,并且把sex列的列名改成性别:

db.getCollection("xxxx").aggregate(
 [
 	{
        "$match": {
         	"sex": "男",
            "category": {
                "$in": ["数学", "语文"]
            },
            'fieldName': {exists: true, $ne: null },
            'createTime': {
                    $gte: ISODate('2022-07-01T00:00:00Z'),
                    $lte: ISODate('2022-08-01T00:00:00Z')
                },
        }
    },
    { "$project": {
       "_id": 0,
	   "age": 1,
	   "性别": "$sex",
	   "生日":{$dateToString:{format:"%Y-%m-%d %H-%M-%S",date:"$birth"}},
	   "number": "$number",
	   "时间": ""
    }},
    //查询前10条
    { $limit: 10 },
    //如果想分组,就写下面这个group
    ,{
            "$group": {
                "_id": "$colname",//分组字段
                "number": {
                    $avg: "$age"
                }
            }
        }
]);

新增
单个修改

批量修改

db.getCollection("table").update({"aaa":"0108"},{$set:{"bbb":"360"}},{multi: true});

删除

创建视图

db.createView("view_name", "collection_name", [
    {
        $match: {
            abc: "2109245374"
        }
    },
    {
        $project: {
            _id: 1,
            abc: 1,
            def: 1
        }
    }
])

导出

mongodump -h dbhost -d dbname -o dbdirectory

导入

mongorestore -h dbhost -d dbname --dir dbdirectory

连接

mongosh --host localhost --port 27017 --username root --password 123456 --authenticationDatabase admin
### MongoDB 基本语法教程 #### 数据库操作 MongoDB 是一种面向文档的 NoSQL 数据库,其基本概念与关系型数据库有所不同。以下是关于 MongoDB 数据库的一些常见操作: - **选择或创建数据库** 使用 `use` 关键字可以选择或创建一个数据库。如果该数据库不存在,则会在首次插入数据时自动创建它。 ```javascript use myDatabase; ``` - **查看当前使用的数据库** 可以通过以下命令确认当前正在使用的数据库: ```javascript db.getName(); ``` - **列出所有数据库** 列出服务器上的所有数据库可以使用如下命令: ```javascript show dbs; ``` --- #### 集合操作 集合相当于传统 SQL 中的表。 - **创建集合** 创建一个新的集合可以通过 `db.createCollection()` 方法实现: ```javascript db.createCollection("myCollection"); ``` - **删除集合** 删除指定集合可以使用 `db.collection.drop()` 方法: ```javascript db.myCollection.drop(); ``` - **显示所有集合** 查看当前数据库中的所有集合可以用以下命令: ```javascript show collections; ``` --- #### 文档操作 (CRUD) ##### 插入文档 向集合中插入单个或多个文档可以使用 `insertOne()` 或 `insertMany()` 方法: ```javascript // 单条插入 db.myCollection.insertOne({ name: "Alice", age: 25 }); // 批量插入 db.myCollection.insertMany([ { name: "Bob", age: 30 }, { name: "Charlie", age: 35 } ]); ``` ##### 查询文档 查询集合中的文档可以使用 `find()` 和 `findOne()` 方法: ```javascript // 查询所有文档 db.myCollection.find(); // 条件查询 db.myCollection.find({ age: { $gt: 28 } }); // 年龄大于28岁的记录 // 返回第一条匹配项 db.myCollection.findOne({ name: "Alice" }); ``` ##### 更新文档 更新现有文档可以使用 `updateOne()`、`updateMany()` 或者 `$set` 运算符来修改字段值: ```javascript // 修改单条记录 db.myCollection.updateOne( { name: "Alice" }, { $set: { age: 26 } } ); // 修改多条记录 db.myCollection.updateMany( { age: { $lt: 30 } }, { $inc: { age: 1 } } // 将年龄小于30的人增加1岁 ); ``` ##### 删除文档 删除集合中的文档可以使用 `deleteOne()` 或 `deleteMany()` 方法: ```javascript // 删除一条记录 db.myCollection.deleteOne({ name: "Alice" }); // 删除多条记录 db.myCollection.deleteMany({ age: { $gte: 30 } }); ``` --- #### 索引管理 为了提高查询性能,可以在字段上建立索引。 - **创建索引** 使用 `createIndex()` 方法为某个字段创建索引: ```javascript db.myCollection.createIndex({ name: 1 }); // 按升序排列 db.myCollection.createIndex({ age: -1 }); // 按降序排列 ``` - **查看索引** 显示集合中存在的所有索引: ```javascript db.myCollection.getIndexes(); ``` - **删除索引** 移除已有的索引可以使用 `dropIndex()` 方法: ```javascript db.myCollection.dropIndex({ name: 1 }); ``` --- #### 聚合框架 聚合用于执行复杂的数据分析任务,通常涉及分组、过滤和计算统计信息。 - **简单聚合示例** 统计每种年龄段的人数: ```javascript db.myCollection.aggregate([ { $group: { _id: "$age", count: { $sum: 1 } } } ]); ``` --- #### Redis 缓存集成注意事项 当 Redis 缓存依赖于 MongoDB 提供的基础数据时,需注意同步机制。例如,在更新 MongoDB 字段后,可能需要清除 Redis 对应的缓存条目以保持一致性[^4]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值