2017-08-08 130 views
1

所以,我有在一些文件的結構如下:匹配文檔

{ 
    "Group": [ 
    { 
     "data": { 
     "field1": "VALUE1", 
     "otherfield": "XXXX" 
     } 
    }, 
    { 
     "data": { 
     "field1": "VALUE2", 
     "otherfield": "YYYYY" 
     } 
    } 
    ] 
} 

Group陣列的大小可以是0,在尺寸1或2。我需要的是匹配包含VALUE1VALUE2以及field1的文檔。在這裏找不到適合這個特定情況的合適答案。

我試過使用$elemMatch,但它不會工作,只帶有兩個值的文檔。也就是說,它將像or而不是and一樣工作。

回答

2

可以使用帶有點符號的$all陣列查詢運營商這樣的:

db.test.find({'Group.data.field1': {$all: ['VALUE1', 'VALUE2']}}) 

$all操作員選擇的文件,其中一個字段的值是包含所有指定元素的數組。