我正在尝试将此查询转换为数组,以便我可以在 PHP 中使用,但我遇到了“索引”问题...如您所见,我需要多个“$ or”,因为每个“$ or' 验证一组字段,我不能将它们全部加入同一个 '$or'。
这是查询对象:
{
'$and' : [
{ '$or' : [
{'author' : { '$exists' : false } }
, {'author' : { '$in' : [ 'john' , false ] } }
] }
, {'$or' : [
{ '$and' : [ { 'type' : 'post' } , { 'user_id' : 123456 } ] }
, { 'type' : 'comment' }
] }
, { '$or' : [
{ 'tags.name' : { '$in' : [ 'tag1' , 'tag2' ] } }
, { 'tags' : false }
, { 'tags' : { '$exists' : false } }
] }
]
}
第一组 '$or' 验证了 'author' 字段,因此我正在搜索该字段中带有 'john' 或 false 的任何文档,并且我想要没有 'author' 字段的文档。第二组验证“类型”字段,我需要将“评论”作为值或“帖子”且“用户 ID”为 123456 的文档。第三组验证“标签”字段,我需要一些“标签” '$in' 或 'tags' = false 或 'tags' 中的 .name' 不存在...
这 3 组必须是真的,这就是为什么它们都在 '$and' 运算符中...我知道 '$and' 仅在 2.0+ 中有效,但我使用的是 2.1(聚合框架测试.. . 它只是摇滚!XD)
我想就是这样......如果有另一种编写查询的方式,我真的很想看到......谢谢!