2016-06-07 71 views
0

对于我们的软件,我需要一个mongodb过滤器来过滤数据库中的特定文档。 下面是一个例子,我的数据看起来像:针对数组中特定元素的MongoDb过滤器

[ 
    { 
    "_id": "v4fv654vae65", 
    "Title": "Title 123", 
    "Array": [ 
     "Value1", 
     "Value2" 
    ] 
    }, 
    { 
    "_id": "f46vrwe6vg", 
    "Title": "Title 456", 
    "Array": [ 
    "Value3", 
    "Value1", 
    "Value2" 
    ] 
    } 
] 

现在我需要一个过滤器,过滤阵列。过滤器只能检查值“Value1”和“Value2”。我不想要文档的值:“Value3”。

我现在的过滤器看起来像这样:

.find({ "Array": {$in: ["Value1", "Value2"]}}) 

这个滤镜近,也将返回数组中的“值3”字段的doucment。

+0

您可以使用all而不是in。 http://stackoverflow.com/questions/5366687/how-to-check-if-an-array-field-contains-a-unique-value-or-another-array-in-mongo –

+0

我想你应该看看这里:http://stackoverflow.com/questions/37599298/in-mongo-how-would-i-match-all-items-of-collection-against-a-larger-array –

回答

0

在不使用$,尝试这种方式

db.getCollection('collectionName').find({"Array":[ 
      "Value1", 
      "Value2" 
     ]}) 

输出

[ 
{ 
    "_id": "v4fv654vae65", 
    "Title": "Title 123", 
    "Array": [ 
     "Value1", 
     "Value2" 
    ] 
    } 
] 
0

.find({$和:[ { “阵列”:{$ nin的:[ “值3”]}},{ “阵列”:{$中:[ “值1”, “值2” ]}} ]})

问候