Mongodb Mongo DB搜索查询未给出结果 db.feedback.find({ “$or”:[ {“template_id”:{“$regex”:“*22532.*”,“$options”:“i”}, {“user_id”:{“$regex”:“*22532.*”,“$options”:“i”} ] })
Mongodb Mongo DB搜索查询未给出结果 db.feedback.find({ “$or”:[ {“template_id”:{“$regex”:“*22532.*”,“$options”:“i”}, {“user_id”:{“$regex”:“*22532.*”,“$options”:“i”} ] }),mongodb,mongodb-query,Mongodb,Mongodb Query,template\u id是一个字符串,user\u id是NumberLong数据类型,它找不到结果。它给出了模板id的结果,如果我输入了正确的值,只有user\u id列似乎没有响应,有什么想法吗 样本数据 { "_id" : ObjectId("5ef21b7de21f8756b67da6e7"), "action_monkey" : 0, "feedback" : false, "more_feed
template\u id
是一个字符串,user\u id
是NumberLong数据类型,它找不到结果。它给出了模板id
的结果,如果我输入了正确的值,只有user\u id列似乎没有响应,有什么想法吗
样本数据
{ "_id" : ObjectId("5ef21b7de21f8756b67da6e7"), "action_monkey" : 0, "feedback" : false, "more_feedback" : 0, "template_id" : "M23G5RK", "user_id" : 23423 }, /* 2 createdAt:6/15/2020, 3:16:53 PM*/ { "_id" : ObjectId("5ee74a95ae8ac276076db26a"), "action_monkey" : 0, "feedback" : false, "more_feedback" : 0, "template_id" : "M23G5RK", "user_id" : 23375 }, /* 3 createdAt:6/15/2020, 5:55:22 AM*/ { "_id" : ObjectId("5ee6c6faae8ac276076db24b"), "action_monkey" : 0, "feedback" : false, "more_feedback" : 0, "template_id" : "M23G5RK", "user_id" : 23423 }
我对这个问题没有任何疑问 当您使用条件时,任何一个条件都应该为true 我尝试了您的查询,您正在传递
*22532.*
既不在模板id中也不在用户id中的值。因此,您没有获得任何数据
请尝试以下查询
查询:
db.getCollection('test1').find(
{ "$or":[
{"template_id":{"$regex":".*M23.*","$options":"i"}},
{"user_id":{"$regex":".*23.*","$options":"i"}
}]
})
/* 1 */
{
"_id" : ObjectId("5ef21b7de21f8756b67da6e7"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
/* 2 */
{
"_id" : ObjectId("5ee74a95ae8ac276076db26a"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23375
}
/* 3 */
{
"_id" : ObjectId("5ee6c6faae8ac276076db24b"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
结果是完美的
结果:
db.getCollection('test1').find(
{ "$or":[
{"template_id":{"$regex":".*M23.*","$options":"i"}},
{"user_id":{"$regex":".*23.*","$options":"i"}
}]
})
/* 1 */
{
"_id" : ObjectId("5ef21b7de21f8756b67da6e7"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
/* 2 */
{
"_id" : ObjectId("5ee74a95ae8ac276076db26a"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23375
}
/* 3 */
{
"_id" : ObjectId("5ee6c6faae8ac276076db24b"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
====编辑:=======
由于user\u id
是整数值,因此常规正则表达式过滤器不会处理整数值。因此,我们将把一个整数值转换成一个字符串来应用正则表达式过滤器
db.getCollection('test1').aggregate([
{ "$project": {
"user_id_s": { "$toLower": "$user_id" },
"document": "$$ROOT"
}
},
{ "$match": {
"$or":[
{"document.template_id":{"$regex":".*M23123.*","$options":"i"}},
{"user_id_s":{"$regex":".*23.*","$options":"i"}}
]
}},
{
"$replaceRoot": {
newRoot: "$document"
}
}
])
我对这个问题没有任何疑问
当您使用条件时,任何一个条件都应该为true
我尝试了您的查询,您正在传递*22532.*
既不在模板id中也不在用户id中的值。因此,您没有获得任何数据
请尝试以下查询
查询:
db.getCollection('test1').find(
{ "$or":[
{"template_id":{"$regex":".*M23.*","$options":"i"}},
{"user_id":{"$regex":".*23.*","$options":"i"}
}]
})
/* 1 */
{
"_id" : ObjectId("5ef21b7de21f8756b67da6e7"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
/* 2 */
{
"_id" : ObjectId("5ee74a95ae8ac276076db26a"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23375
}
/* 3 */
{
"_id" : ObjectId("5ee6c6faae8ac276076db24b"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
结果是完美的
结果:
db.getCollection('test1').find(
{ "$or":[
{"template_id":{"$regex":".*M23.*","$options":"i"}},
{"user_id":{"$regex":".*23.*","$options":"i"}
}]
})
/* 1 */
{
"_id" : ObjectId("5ef21b7de21f8756b67da6e7"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
/* 2 */
{
"_id" : ObjectId("5ee74a95ae8ac276076db26a"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23375
}
/* 3 */
{
"_id" : ObjectId("5ee6c6faae8ac276076db24b"),
"action_monkey" : 0,
"feedback" : false,
"more_feedback" : 0,
"template_id" : "M23G5RK",
"user_id" : 23423
}
====编辑:=======
由于user\u id
是整数值,因此常规正则表达式过滤器不会处理整数值。因此,我们将把一个整数值转换成一个字符串来应用正则表达式过滤器
db.getCollection('test1').aggregate([
{ "$project": {
"user_id_s": { "$toLower": "$user_id" },
"document": "$$ROOT"
}
},
{ "$match": {
"$or":[
{"document.template_id":{"$regex":".*M23123.*","$options":"i"}},
{"user_id_s":{"$regex":".*23.*","$options":"i"}}
]
}},
{
"$replaceRoot": {
newRoot: "$document"
}
}
])
Hey@ovais你能不能添加一些样本数据{“_id”:ObjectId(“5ef21b7de21f8756b67da6e7”),“action_monkey”:0,“feedback”:false,“more_feedback”:0,“template_id”:“M23G5RK”,“user_id”:23423},/*2 createdAt:6/15/2020,3:16:53下午*/{“_id”:ObjectId(“5ee74a95ae8ac276076db26a”),“action_monkey”:0,“feedback”:false,“更多反馈”:0,“模板id”:“M23G5RK”,“用户id”:23375},/*3创建日期:6/15/2020,5:55:22 AM*/{“\U id”:ObjectId(“5ee6c6faae8ac276076db24b”),“操作猴子”:0,“反馈”:false,“更多反馈”:0,“模板id”:“M23G5RK”,“用户id”:23423},Regex操作字符串,而不是数字。由于文档中字段的类型与查询运算符的类型不匹配,因此不存在匹配。Hey@ovais您能否添加一些示例数据{“_id”:ObjectId(“5ef21b7de21f87567da6e7”),“action_monkey”:0,“feedback”:false,“more_feedback”:0,“template_id”:“M23G5RK”,“user_id”“:23423},/*2 createdAt:6/15/2020,3:16:53 PM*/{”\uID:ObjectId(“5ee74a95ae8ac276076db26a”),“动作猴子”:0,“反馈”:false,“更多反馈”:0,“模板id:“M23G5RK”,“用户id”:23375},/*3 createdAt:6/15/2020,5:55:22 AM*/\uID:ObjectId:“动作猴子”:0,“反馈”:false,“更多反馈”:0,“模板id”:“M23G5RK”,“用户id”:23423},正则表达式对字符串而不是数字进行操作。由于文档中字段的类型与查询运算符的类型不匹配,因此不存在匹配项。我有一个查询在相同的模式db.dpsExtractedData.find({“$or”:[{“product_id”:{“$regex”:“$options”:“*60945.*”,“$options”:“I”},{“style_id”:{“$regex”:“*60945.*”,“$options”:“I”})请检查style_id和user_id类型是否为字符串或整数,我实际上使用Laravel的Lara表包使用jessengerI see从MongoDB获取数据。我不知道Lara table套餐和jessenger。谢谢我有一个查询,它在相同的模式db.dpsExtractedData.find({“$or”:[{“product_id”:{“$regex”:“*60945.*”,“$options”:“I”},{“style_id”:{“$regex”:“*60945.*”,“$options”:“I”}})上运行得非常好请检查style_id和user_id类型是否为字符串或整数,我实际上使用Laravel的Lara表包使用jessengerI see从MongoDB获取数据。我不知道Lara table套餐和jessenger。谢谢