MongoDB 查询操作文档


title: MongoDB 查询操作文档
date: 2023-09-23 13:35:49
categories:

  • 大数据技术
    tags:

目录

文档查询条件的使用

操作格式范例RDBMS中的类似语句
等于{<key>:<value>}db.col.find({"by":"x"}).pretty()where by = 'x'
小于{<key>:{$lt:<value>}}db.col.find({"likes":{$lt:50}}).pretty()where likes < 50
小于或等于{<key>:{$lte:<value>}}db.col.find({"likes":{$lte:50}}).pretty()where likes <= 50
大于{<key>:{$gt:<value>}}db.col.find({"likes":{$gt:50}}).pretty()where likes > 50
大于或等于{<key>:{$gte:<value>}}db.col.find({"likes":{$gte:50}}).pretty()where likes >= 50
不等于{<key>:{$ne:<value>}}db.col.find({"likes":{$ne:50}}).pretty()where likes != 50

创建一个表文档,里面的数据可以使用这些语法的

db.createCollection("col")

db.col.insertMany([
    {
        "title": "Document 1",
        "by_user": "User1",
        "likes": 55
    },
    {
        "title": "Document 2",
        "by_user": "User2",
        "likes": 42
    },
    {
        "title": "Document 3",
        "by_user": "User1",
        "likes": 60
    }
])

聚合查询

表达式描述实例
$sum计算总和。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg计算平均值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min获取集合中所有文档对应值得最小值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max获取集合中所有文档对应值得最大值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push在结果文档中插入值到一个数组中。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet在结果文档中插入值到一个数组中,但不创建副本。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])

创建示例表文档

db.createCollection("dianji")

s= [{ "_id": 1, "by_user": "Alice", "likes": 10, "url": "http://example.com/1" },
{ "_id": 2, "by_user": "Bob", "likes": 15, "url": "http://example.com/2" },
{ "_id": 3, "by_user": "Alice", "likes": 8, "url": "http://example.com/3" },
{ "_id": 4, "by_user": "Bob", "likes": 20, "url": "http://example.com/4" }]
db.dianji.insert(s)

$sum - 计算总和

计算每个用户(by_user)的点赞总数:

db.mycol.aggregate([
    {
        $group: {
            _id: "$by_user",
            num_likes: { $sum: "$likes" }
        }
    }
])

$avg - 计算平均值

计算每个用户(by_user)的点赞平均值:

db.mycol.aggregate([
    {
        $group: {
            _id: "$by_user",
            avg_likes: { $avg: "$likes" }
        }
    }
])

$min - 获取最小值

获取每个用户(by_user)的最低点赞数:

db.mycol.aggregate([
    {
        $group: {
            _id: "$by_user",
            min_likes: { $min: "$likes" }
        }
    }
])

$max - 获取最大值

获取每个用户(by_user)的最高点赞数:

db.mycol.aggregate([
    {
        $group: {
            _id: "$by_user",
            max_likes: { $max: "$likes" }
        }
    }
])

$push - 插入值到数组

创建每个用户(by_user)的URL数组:

db.mycol.aggregate([
    {
        $group: {
            _id: "$by_user",
            urls: { $push: "$url" }
        }
    }
])

$addToSet - 插入唯一值到数组

创建每个用户(by_user)的唯一URL数组(去重):

db.mycol.aggregate([
    {
        $group: {
            _id: "$by_user",
            unique_urls: { $addToSet: "$url" }
        }
    }
])

$first - 获取第一个文档数据

对每个用户(by_user)按照某个排序字段获取第一个URL:

db.mycol.aggregate([
    {
        $group: {
            _id: "$by_user",
            first_url: { $first: "$url" }
        }
    }
])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elik-hb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值