pymongo 在值中查找字符串

pymongo find strings in value

我正在制作一个 python 脚本,它使用来自 MongoDB 的数据,问题是我必须找到的数据在一个值内,我需要的字段是两个标识符和它生成的日期,我附上一个例子。 在单个查询中找到这两个值的最佳方法是什么?目前我可以找到一个字段,但我不知道如何搜索多个字段

raw_data.find( {"data": { "$regex": "867162029761533" } }

这个值“867162029761533”是id,我需要按消息类型过滤 例如:“+RESP:GTINF”并按日期“20210327193948

mongo 数据库中的值示例

_id:606208d19a159f863be69f3e
source:GPS
data:+BUFF:GTINF,278615,867162029761533,,11,89560100001014459360,24,0,1,12283,0000,4.26,0,1,0,1,20210327193948,1,0,0,00,00,+0000,0,20210327193949,937B$
received_at:2021-03-29T17:05:21.450+00:00

我要查找的所有字段都在“数据”中

感谢帮助

您可以在 $and 字段中组合所有不同的正则表达式查询。

示例数据:

{
    "_id" : ObjectId("60cacbe8b7468e69c11e52e1"),
    "data" : "_id:606208d19a159f863be69f3e\n        source:GPS\n        data:+BUFF:GTINF,278615,867162029761533,,11,89560100001014459360,24,0,1,12283,0000,4.26,0,1,0,1,20210327193948,1,0,0,00,00,+0000,0,20210327193949,937B$\n        received_at:2021-03-29T17:05:21.450+00:00"
}
raw_data.find_one({
    "$and": [
        {"data": {"$regex": "606208d19a159"}},
        {"data": {"$regex": "\+BUFF:GTINF"}},  # Prefix special character `+` with escape sequence `\`
        {"data": {"$regex": "20210327193948"}},
    ],
})

Note: Use escape sequence for regex \ (backslash) wherever you will be using Regex special characters. Like the \+ in place of + in +BUFF:GTINF regex search