如何查找包含字符串值的对象的节点

时间:2017-02-02 00:01:15

标签: mongodb

我正在努力创建一个查找查询,找到包含" Item1"的节点。

{
  "_id" : ObjectId("589274f49bd4d562f0a15e07"),
  "Value" : [["Item1", {
        "Name" : "John",
        "Age" : 45
      }], ["Item2", {
        "Address" : "123 Main St.",
        "City" : "Hometown",
        "State" : "ZZ"
      }]]
}

在这个例子中," Item1"不是键/值对,而是一个字符串,它是作为更大数组的一部分的数组的一部分。这是一种传统格式,因此我无法对其进行调整。

我尝试过类似{ Value: {$elmemmatch:{$elemmatch:{"Item1"}}}的内容,但这并没有返回任何匹配项。类似地,$regex不起作用,因为它似乎只匹配字符串对象(并且整个对象不是字符串,而是数组中数组中的字符串)。

2 个答案:

答案 0 :(得分:1)

您似乎应该使用$in$eq运算符来匹配值。

所以试试这个:

db.collection.find({'Value':{$elemMatch:{$elemMatch:{$in:['Item1']}}}})

或者运行此选项以获取特定的Item

db.collection.find({},{'Value':{$elemMatch:{$elemMatch:{$in:['Item1']}}}})

希望这有帮助。

答案 1 :(得分:0)

var data = {  
"_id":"ObjectId('589274f49bd4d562f0a15e07')",
"Value":[  
  [  
     "Item1",
     {  
        "Name":"John",
        "Age":45
     }
  ],
  [  
     "Item2",
     {  
        "Address":"123 Main St.",
        "City":"Hometown",
        "State":"ZZ"
     }
   ]
 ]
}

data.Value[0][0] // 'Item1'

复制并粘贴repl它有效。 您的数据结构存在错误