MongoDB

388 阅读1分钟

正则匹配查询,不区分大小写

查询user集合中name字段包含/e,不区分大小写的数据

db.user.find({name:{$regex:"/e",$options:"$i"}});
image-20200822235245722

新增一条数据

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
})

结果

image-20200922130051119

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
            }
        }
    }
])
image-20200922130441019

user集合总共14条记录

分组-根据userId字段分组,统计每组数量,并按数量降序

db.user.aggregate([
    {
        $group: {
            _id: "$userId",
            count: {
                $sum: 1
            }
        }
    },
    {
        $sort: {
            count: - 1
        }
    }
]);
image-20200922130614817
image-20200922130614817

会把userId is null的数据作为一组

多字段分组统计

根据cityage字段分组,统计结果放到count字段中

db.user.aggregate([
    {
        "$group": {
            "_id": {
                "city": "$city",
                "age": "$age"
            },
            "city": {
                "$sum": "$city"
            },
            "age": {
                "$sum": "$Q2"
            },
            "count": {
                "$sum": 1
            }
        }
    }
])
image-20200922130845946
image-20200922130845946
image-20200922130955591
image-20200922130955591