Php 在lumen:$或/$和/$nor的mongoDB查询中,条目必须是完整对象
在我的MongoDB中,我存储了如下值:Php 在lumen:$或/$和/$nor的mongoDB查询中,条目必须是完整对象,php,mongodb,laravel,lumen,Php,Mongodb,Laravel,Lumen,在我的MongoDB中,我存储了如下值: { "_id" : ObjectId("5bed3f5019f0431be000412b"), "reference" : "SL2PR01MB2745E4160158C08C4B7A367285C30@SL2PR01MB2745.apcprd01.prod.exchangelabs.com,SL2PR01MB274333160158C08C4B7A367285C30@SL2PR01MB2745.apcprd01.prod.excha
{
"_id" : ObjectId("5bed3f5019f0431be000412b"),
"reference" : "SL2PR01MB2745E4160158C08C4B7A367285C30@SL2PR01MB2745.apcprd01.prod.exchangelabs.com,SL2PR01MB274333160158C08C4B7A367285C30@SL2PR01MB2745.apcprd01.prod.exchangelabs.com",
"email_thread_id" : NumberInt(5)
}
{
"_id" : ObjectId("5bed3f5019f0431be000412b"),
"reference" : "SL2PR01MB2745E4160158C08C4B7A364444C30@SL2PR01MB2745.apcprd01.prod.exchangelabs.com",
"email_thread_id" : NumberInt(6)
}
我的搜索关键字是:
”SL2PR01MB2745E4160158C08C4B7A364444C30@SL2PR01MB2745.apcprd01.prod.exchangelabs.com“
它与上面JSON中的第二个数组匹配
这是我的疑问
$referanceId= "SL2PR01MB2745E4160158C08C4B7A364444C30@SL2PR01MB2745.apcprd01.prod.exchangelabs.com";
$mailExists = DB::connection('mongodb')->collection('email_message')
->select('email_thread_id');
if ($referanceId) {
$mailExists->whereRaw("find_in_set(".$referanceId.", reference)");
}
$query = $mailExists->first();
但它给我的错误如下:
Find.php第299行中的ServerException:$or/$和/$nor条目必须是完整对象
请帮我解决这个问题。谢谢。您可以使用laravel
where
方法更轻松地完成此操作,这将进行您想要的比较,同时也使您的代码可读性更好
您可以使用以下查询来完成此操作:
DB::connection('mongodb')->collection('email_message')
->where("reference", $referanceId)->first();
如果您的值包含多个引用id作为字符串,则可以使用:
$regexQuery = '/.*'.$referanceId.'.*/';
DB::connection('mongodb')->collection('email_message')
->where("reference", 'regexp', $regexQuery)->first();
这将匹配字符串中任何位置的引用ID
另一个查询中提到的@hetalgotel是:
$mailExists->where("reference", 'like', "%$referanceId%")
这个方法在这个场景中产生了预期的结果您可以使用laravel
where
方法更轻松地实现这一点,这将进行您想要的比较,并且使您的代码可读性更好
您可以使用以下查询来完成此操作:
DB::connection('mongodb')->collection('email_message')
->where("reference", $referanceId)->first();
如果您的值包含多个引用id作为字符串,则可以使用:
$regexQuery = '/.*'.$referanceId.'.*/';
DB::connection('mongodb')->collection('email_message')
->where("reference", 'regexp', $regexQuery)->first();
这将匹配字符串中任何位置的引用ID
另一个查询中提到的@hetalgotel是:
$mailExists->where("reference", 'like', "%$referanceId%")
这一个在这个场景中产生了预期的结果我的案例就像5月份的数据库一样,它存储为1,2,3,4,5,我必须匹配“1”,然后我不能使用它qyery@hetalgohel,作为数组还是作为包含这些值的字符串?作为字符串,我已将其存储在数据库中。我们可以使用mongodb中的find_吗?它正在使用$mailExists->where(“reference”、“like”、“%$referenceId%”;正如预期的结果一样,我的案例类似于5月份的数据库,它存储为1,2,3,4,5,我必须匹配“1”,然后我不能使用它qyery@hetalgohel,作为数组或包含这些值的字符串?作为字符串,我已将其存储在数据库中。我们是否可以使用mongodb中的find_?它正在使用$mailExists->where(“引用“,'like',“%$referenceId%”;作为预期结果