我想這個查詢轉換成一個數組,這樣我就可以在PHP中使用,但我堅持的「索引」的問題......正如你可以看到,我需要的倍數「$或」,因爲每一個「$或」驗證一組領域,我不能加入他們都在同一個「$或」。
這裏是查詢對象:
{
'$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 } }
] }
]
}
第一套「$或」驗證「作者」字段,所以我在尋找任何文件與「約翰」或假的領域,我想要那些沒有「作者」字段的文檔。 第二組驗證「類型」字段,在那裏我需要有「註釋」的值或「後」和「USER_ID」文件爲123456 第三組驗證「標籤」場,在那裏我需要一些「tags.name」的「在$」內部或「標籤」 =虛假或「標籤」不存在...
這3套必須是真實的,這就是爲什麼他們都在「$和「運營商...我知道,‘$和’只能在2.0+,但我使用2.1(聚集frawework測試...它只是ROCKS!XD)
我認爲這是它...如果有另一種寫作查詢的方式,我會很樂意看到......謝謝!
您查詢這個查詢將永遠做一個完整的集合掃描,因爲你正在使用{$存在:假}。這將*速度很慢*要重寫查詢以提高效率,您需要更改模式。 – 2012-07-27 17:05:13
Thx!我會牢記這一點! – 2013-01-18 17:50:45