使用更宽的密钥进行MongoDB搜索

时间:2012-08-21 15:13:19

标签: python mongodb

不确定mongo是否是此处的最佳解决方案,或者甚至是否可行:

我有一份文件:

{
  u'action': [
    {
       u'url': u'http://foo.com',
       u'payload': {
         u'action': u'EndCall'
       }, 
       u'timer': 0
    },
    {
       u'url': u'http://foo.com', 
       u'payload': {
         u'action': u'EndCall'
       },
       u'timer': 0
    }
  ],
  u'pattern': {u'c': 3, u'b': 2, u'd': 4}
}

它有效地是一个键/值对,其中pattern是关键,action是值,

现在说当我使用包含模式的字符串以及其他一些值(未知且无关紧要)进行搜索时,我想要检索此值/文档

例如,我上面应该匹配的搜索字符串是:

query = {"a": 1, "b" : 2, "c" : 3, "d" : 4, "e" : 5 }

所以这个中间部分与模式值匹配,但我不知道我可以删除哪些值来获得完全匹配(例如a& e)

该应用程序是用Python编写的,因为我目前正在Mongo中尝试这个,但很高兴能够探索任何其他解决方案。

1 个答案:

答案 0 :(得分:0)

关于我能想到的唯一方法来做你想做的事情,使查询成为一系列OR选项,如下所示:

db.foo.find( { $or : [ { "a" : 1 } , { "b" : 2 }, { "c" : 3 }, { "d" : 4 }, { "e" : 5 } ] } )

这应该有效,因为看起来你实际上是在“模式”节点的任何部分寻找这些值中的任何一个。