一般网站 要 加入 友情链接吗,seo的含义,wordpress 进销存,萍乡建站公司前言 最近考虑开发游戏#xff0c;网上推荐使用非关系数据库mongodb#xff0c;因此浅尝了一番#xff0c;并将一些语句和符号记录在这里。 相对于mysql、oracle这些关系型数据库#xff0c;基于json文档的mongodb在很多地方都与之大不相同#xff08;可以类比为TCP握手连…前言 最近考虑开发游戏网上推荐使用非关系数据库mongodb因此浅尝了一番并将一些语句和符号记录在这里。 相对于mysql、oracle这些关系型数据库基于json文档的mongodb在很多地方都与之大不相同可以类比为TCP握手连接、和UDP无连接这样的差异开始学的时候挺难转变固有设计思路的。 增删改查
1. 创建Create
在 MongoDB 中创建操作通常指插入文档到集合中。
插入单个文档
db.collectionName.insertOne({field1: value1,field2: value2,// ...
});插入多个文档
db.collectionName.insertMany([{ field1: value1, field2: value2 },{ field1: value3, field2: value4 },// ...
]);2. 读取Read
读取操作是指从集合中检索文档。
查询所有文档
db.collectionName.find({});查询特定条件的文档
db.collectionName.find({ field1: value1 });查询并返回特定字段
db.collectionName.find({ field1: value1 }, { field2: 1, _id: 0 }); // 只返回 field2 字段不返回 _id 字段3. 更新Update
更新操作是指修改集合中的文档。
更新单个文档
db.collectionName.updateOne({ field1: value1 }, // 查询条件{ $set: { field2: newValue2 } } // 更新操作
);更新多个文档
db.collectionName.updateMany({ field1: value1 }, // 查询条件{ $set: { field2: newValue2 } } // 更新操作
);4. 删除Delete
删除操作是指从集合中移除文档。
删除单个文档
db.collectionName.deleteOne({ field1: value1 });删除多个文档
db.collectionName.deleteMany({ field1: value1 }); 复杂的查询
1. 常用操作
计数文档
db.collectionName.countDocuments({ field1: value1 });排序文档
db.collectionName.find({}).sort({ field1: 1 }); // 升序排序
db.collectionName.find({}).sort({ field1: -1 }); // 降序排序分页查询
db.collectionName.find({}).skip(10).limit(5); // 跳过前10个文档返回接下来的5个文档
根据id查询
db.collectionName.find({ _id: ObjectId(671db3ea81470184298c3d44) });
聚合查询
//查询某辆车某种成色的情况
db.global_item.aggregate([{$match: {car_type: SUV}},{$unwind: $car_fine},{$match: {car_fine.fine: 饱经摧残}},{$project: {_id: 1,desc: $car_fine.desc,fine: $car_fine.fine,mile_fix: $car_fine.mile_fix,person_fix: $car_fine.person_fix,refit: $car_fine.refit,speed_fix: $car_fine.speed_fix,weight_fix: $car_fine.weight_fix}}
])
解释 $match 第一个 $match 阶段过滤出 car_type 为 SUV 的文档。 $unwind $unwind 展开 car_fine 数组每个元素都会生成一个新的文档。 $match 第二个 $match 阶段过滤出 car_fine.fine 字段为 饱经摧残 的文档。 $project $project 阶段只返回你需要的字段并重新命名这些字段以符合你的输出格式。 复杂查询操作符
1. 逻辑操作符
$and匹配所有给定条件$or匹配任意一个给定条件$not对条件取反$nor不匹配所有给定条件
示例
// 使用 $and 操作符匹配 field1 value1 且 field2 value2 的文档
db.collectionName.find({$and: [{ field1: value1 },{ field2: value2 }]
});// 使用 $or 操作符匹配 field1 value1 或 field2 value2 的文档
db.collectionName.find({$or: [{ field1: value1 },{ field2: value2 }]
});// 使用 $not 操作符匹配 field1 不等于 value1 的文档
db.collectionName.find({field1: { $not: { $eq: value1 } }
});// 使用 $nor 操作符不匹配 field1 value1 且 field2 value2 的文档
db.collectionName.find({$nor: [{ field1: value1 },{ field2: value2 }]
});2. 比较操作符
$eq等于$ne不等于$gt大于$gte大于等于$lt小于$lte小于等于$in在数组中的值$nin不在数组中的值
示例
// 查找 field1 等于 value1 的文档
db.collectionName.find({ field1: { $eq: value1 } });// 查找 field1 不等于 value1 的文档
db.collectionName.find({ field1: { $ne: value1 } });// 查找 field2 大于 value2 的文档
db.collectionName.find({ field2: { $gt: value2 } });// 查找 field2 大于等于 value2 的文档
db.collectionName.find({ field2: { $gte: value2 } });// 查找 field2 小于 value2 的文档
db.collectionName.find({ field2: { $lt: value2 } });// 查找 field2 小于等于 value2 的文档
db.collectionName.find({ field2: { $lte: value2 } });// 查找 field1 的值在 [value1, value2, value3] 数组中的文档
db.collectionName.find({ field1: { $in: [value1, value2, value3] } });// 查找 field1 的值不在 [value1, value2, value3] 数组中的文档
db.collectionName.find({ field1: { $nin: [value1, value2, value3] } });3. 元素操作符
$exists判断字段是否存在$type判断字段类型
示例
// 查找包含 field1 字段的文档无论 field1 的值是什么
db.collectionName.find({ field1: { $exists: true } });// 查找不包含 field1 字段的文档
db.collectionName.find({ field1: { $exists: false } });// 查找 field1 的类型为指定类型的文档MongoDB类型编号或名称
db.collectionName.find({ field1: { $type: string } }); // 或者使用类型编号如 $type: 24. 数组操作符
$all匹配数组中所有元素$elemMatch匹配数组中的嵌套文档或特定条件$size匹配数组长度
示例
// 查找数组字段 fieldArray 包含所有指定元素的文档
db.collectionName.find({ fieldArray: 看着都头疼