在Ne DB中仅查找来自JSON数组的匹配元素/ react native-local-mongo / mongo db

时间:2018-12-03 11:20:25

标签: mongodb react-native nedb

我试图从带有嵌套数组的JSON中仅读取匹配的键。 这是我的JSON。

data:[
{
"locale":"en_US",
"pages":[
   {
     pageName:"testpage1",
     "messages":{
        "m1":"v1",
        "m2":""
      }
   },
{
     pageName:"testpage2",
     "messages":{
        "m1":"v3",
        "m2":"v4"
      }
   }
]
},
{
"locale":"in_L1",
"pages":[
   {
     pageName:"testpage1",
     "messages":{
        "m1":"i1",
        "m2":"i2"
      }
   },
{
     pageName:"testpage2",
     "messages":{
        "m1":"i3",
        "m2":"i4"
      }
   }
]
}
]

我正在尝试以下查询:

    db['collec1'].find({locale:"en_US", pages:{$elemMatch:{pageName:"testpage1"}, 
            {locale:1,"pages.pageName":1}}})

也尝试过

db['collec1'].find({locale:"en_US", "pages.pageName":"testpage1"},{locale:1,"pages.pageName":1}}})

都返回了,数组中的所有元素如下:

[
  {
    "locale":"en_US",
    pages:{pageName:["testpage1", "testpage2"]}]
  }
]

预期输出为:

[
      {
        "locale":"en_US",
        pages:{pageName:["testpage1"]}]
      }
    ]

有人可以帮我解决我做错的地方以及需要更改的地方吗? 我正在使用this库,它是mongodb的一个称为Ne DB的克隆。

1 个答案:

答案 0 :(得分:0)

 db['collec1'].find({locale:"en_US", pages:{$elemMatch:{pageName:"testpage1"}}).
  

在查找方法{}中尝试一个空项目,然后尝试   上面的例子