正则匹配查询,不区分大小写
查询user集合中name字段包含/e,不区分大小写的数据
db.user.find({name:{$regex:"/e",$options:"$i"}});
新增一条数据
db.card.insert({
title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
实现_id自增
// 创建counters集合
db.createCollection("counters")
// 在counters集合中添加文档, sequence_value 记录当前id值
{
"_id":"userId",
"sequence_value": 0
}
// 获取自增值函数
function getNextSequenceValue(sequenceName){
var sequenceDocument = db.counters.findAndModify(
{
query:{_id: sequenceName },
update: {$inc:{sequence_value:1}},
"new":true
});
return sequenceDocument.sequence_value;
}
// 新增文档_id实现自增
db.user.insert({
"_id": getNextSequenceValue("userId"),
"city": "北京",
"age": 10
})
结果
in查询
db.user.find({
'tags': {
$in: ['electronics','1']
}
});
// 查询tags包含 ['electronics','1'] 中的一条
all查询
db.user.find({
'tags': {
$all: ['electronics','1']
}
});
// 查询数据tags字段完全包含 ['electronics','1'] 的 数据
统计表中的数量
db.user.aggregate([
{
$group: {
_id: null,
count: {
$sum: 1
}
}
}
])
user集合总共14条记录
分组-根据userId字段分组,统计每组数量,并按数量降序
db.user.aggregate([
{
$group: {
_id: "$userId",
count: {
$sum: 1
}
}
},
{
$sort: {
count: - 1
}
}
]);
会把userId is null的数据作为一组
多字段分组统计
根据city和age字段分组,统计结果放到count字段中
db.user.aggregate([
{
"$group": {
"_id": {
"city": "$city",
"age": "$age"
},
"city": {
"$sum": "$city"
},
"age": {
"$sum": "$Q2"
},
"count": {
"$sum": 1
}
}
}
])