文章

mongodb语法

语法

基本格式

1
db.集合名.find({ <条件> })

等值匹配 { field : value }

1
{ "field" : value }

普通对象/数组对象嵌套字段 { class.attribute : value }

1
2
{ "对象名.属性名": value }
{ "数组名.对象名.属性名": value }

比较运算 { field: { $xx : val } }

1
2
3
{ field: { $gt: 0.99 } }   // 大于
{ field: { $lt: 100 } }    // 小于 
{ field: { $in: [1, 2] } } // 在数组中
运算符含义示例
$eq等于{ field: { $eq: value } }
$ne不等于{ field: { $ne: value } }
$gt大于{ field: { $gt: 0.99 } }
$gte大于等于{ field: { $gte: 100 } }
$lt小于{ field: { $lt: 100 } }
$lte小于等于{ field: { $lte: 50 } }
$in在数组中{ field: { $in: [1, 2, 3] } }
$nin不在数组中{ field: { $nin: [1, 2] } }

插入命令

1
2
3
4
db.shop.updateOne(
    { _id: ObjectId("61d689b3ff81eb001f3ba9db") },
    { $set: { vender_id: "" } }
)

排序命令

1
2
# 获取最新的
db.sdk_ss_goods.find({ shop_id: "632d4d68fef90d00191c8a65" }).sort({ _id: -1 }).limit(1)

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
    "_id": {
        "$oid": "6912deab03b51ebcf2efe7d7"
    },
    "one_id": "b35fc665-409a-4501-a3bc-fa8a5b27311a",
    "req": {
        "messageid": "b35fc665-409a-4501-a3bc-fa8a5b27311a_7560982569408267785",
        
        "evaluationdatalist": [
            {
                "datapool": "售前Agent_isv评估_20251015_20251021",
                "dataid": "b35fc665-409a-4501-a3bc-fa8a5b27311a",
                "data": {
                    "backgroundinfo": "# 系统信息\n- 当前时间:2025/10/19 22:46:06\n\n# 店铺信息\n- 店铺名称:悍石官方旗舰店\n- 是否抖音旗舰店:否\n\n# 用户信息\n- 用户在该店铺的会员状态:不是会员\n\n# 进线商品信息\n## 商品信息\n商品ID:0\n\n- 商品基础信息:商品名称:HUMBLE STONE悍石 立体剪裁 户外三防 软壳冲锋外套24188 商品属性:n\n"
                },
                "ext": {
                    "msg_id": "1846421919634508",
                    "conversation_id": "7562944075855316262",
                    "date": "20251019",
                    "log_id": "02176088516297200000000000000000000ffff0ad29e2219ce43"
                }
            }
        ],
        "datacount": 1,
        "taskid": "b35fc665-409a-4501-a3bc-fa8a5b27311a",
        "timestamp": {
            "$numberLong": "1762862863954"
        }
    }
}

筛选字段

根级字段精确匹配

1
2
3
4
5
6
7
8
9
10
11
12
// 按 one_id 查询
db.collection.find({
  "one_id": "b35fc665-409a-4501-a3bc-fa8a5b27311a"
})

// 按 req.timestamp 区间查询(NumberLong 值)
db.collection.find({
  "req.timestamp": {
    "$gte": NumberLong("1762862863954"),
    "$lte": NumberLong("1762862863954")
  }
})

嵌套数组内字段(evaluationdatalist)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 数组内任意元素满足即可
db.collection.find({
  "req.evaluationdatalist.ext.conversation_id": "7562944075855316262"
})

// 只想让同一个元素同时满足多个条件 $elemMatch
同时限定 datapool + dataid
db.collection.find({
  "req.evaluationdatalist": {
    "$elemMatch": {
      "datapool": "售前Agent_isv评估_20251015_20251021",
      "dataid": "b35fc665-409a-4501-a3bc-fa8a5b27311a"
    }
  }
})

嵌套对象字段(ext、data、backgroundinfo)

1
2
3
4
5
6
7
8
9
// 按 ext.date 查询
db.collection.find({
  "req.evaluationdatalist.ext.date": "20251019"
})

// 模糊匹配 backgroundinfo 中的「店铺名称」
db.collection.find({
  "req.evaluationdatalist.data.backgroundinfo": /悍石官方旗舰店/
})

查询字段

只返回根级字段

1
2
3
4
5
6
7
8
9
db.collection.find(
  { "one_id": "b35fc665-409a-4501-a3bc-fa8a5b27311a" },   // 过滤条件
  {                                      // 投影字段
    "_id": 1,
    "one_id": 1,   
    "req.taskid": 1,
    "req.timestamp": 1
  }
)

只要数组里「某个嵌套字段」

1
2
3
4
5
6
7
8
9
db.collection.find(
  { "req.evaluationdatalist.datapool": "售前Agent_isv评估_20251015_20251021" },// 过滤条件
  {                                                   // 投影字段
    "_id": 0,
    "one_id": 1,
    "req.evaluationdatalist.datapool": 1,   
    "req.evaluationdatalist.ext.date": 1
  }
)

© 2024- lfj