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
我正在制作一个 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