Php MongoDB regex带$and的多查询
我很难做到这一点 我有这段代码,我已经在Rock Mongo中测试过了,它运行得很好Php MongoDB regex带$and的多查询,php,mongodb,mongodb-query,Php,Mongodb,Mongodb Query,我很难做到这一点 我有这段代码,我已经在Rock Mongo中测试过了,它运行得很好 array( 'TEST' => array( '$in' => array( new MongoRegex('/^(?!TESTVALUE)/$ig')) ) ) 上面的代码返回给我所有的文档,这些文档对于键测试没有TESTVALUE 现在我想要实现什么 首先,我不知道如何编写一段代码来获取所有没有值TESTVALUE和SECOND
array(
'TEST' =>
array( '$in' =>
array( new MongoRegex('/^(?!TESTVALUE)/$ig'))
)
)
上面的代码返回给我所有的文档,这些文档对于键测试没有TESTVALUE
现在我想要实现什么
首先,我不知道如何编写一段代码来获取所有没有值TESTVALUE和SECONDVALUE的文档
这将是这样的:
array(
'TEST' =>
array( '$in' =>
array( new MongoRegex('/^(?!TESTVALUE)/$ig'),new MongoRegex('/^(?!SECONDVALUE)/$ig') )
)
)
我还需要上面用PHP编写的代码
欢迎您提供任何帮助或建议,我们将不胜感激
提前感谢我认为你不能像那样使用$in,但这应该可以:
'TEST' => array('$and' => array(
array('$regex' => new MongoRegex('/^(?!TESTVALUE)/$ig'),
array('$regex' => new MongoRegex('/^(?!TESTVALUE)/$ig')))
一些未经测试的结果您的查询和描述似乎相互矛盾。如果您想要查询所有没有字符串作为字段值的文档,为什么要使用正则表达式?是否不希望该值成为字段值的子字符串?如果您只想在测试字段的值不是X或Y的情况下执行类似“查找文档”的查询,请使用$nin not in:
如果该字段应该匹配多个正则表达式,那么要么将它们组合成一个正则表达式,要么将条件与$and组合。这不起作用,但我发现您编写的是未经测试的。如果我试着用这个做点什么,我会告诉你。是的,基本上我的意思是,你必须对比每个正则表达式,或者找出如何将它们写入一个正则表达式,也许可以使用|运算符$我今天就放弃了。我真的没有什么想法了。
db.collection.find({ "TEST" : { "$nin" : ["X", "Y"] } })