【问题标题】:mongo find all with field that is object having a specified keymongo 查找所有具有指定键的对象的字段
【发布时间】:2015-08-14 08:03:47
【问题描述】:

mongo db 的文档如下所示:

{
    "_id":  : ObjectId("55cb43e8c78b04f43f2eb503"),
    <some fields>
    "topics": {
        "test/23/result": 149823788,
        "test/27/result": 147862733,
        "input/misc/test": 14672882
    }
}

我需要找到所有具有包含特定键的主题字段的文档。即查找所有具有 topics.key = "test/27/result"

的文档

我尝试了很多东西,但还没有成功,也没有尝试以下工作, 尽管有些应该匹配,但它们不返回任何记录事件:

db.collName.find({"topics.test/27/result": {$exists:true}});
db.collName.find({"topics.test\/27\/result": {$exists:true}});

我怎样才能使查询工作?

斜线字符由另一个进程插入。它们是 mqtt 主题名称。

【问题讨论】:

  • 你用的是哪个mongodb版本??
  • 第一个为我工作 db.collName.find({"topics.test/27/result": {$exists:true}});
  • 感谢您的 cmets。我发现问题在于我构建查询的方式。工作解决方案如下。

标签: mongodb mongodb-query


【解决方案1】:

我找到了解决问题的方法:

我在代码中构建了错误的查询。在下面的示例中,evtData.source 包含要搜索的键名,即“test/27/result”

适合我的查询方法是:

var query = {};
query['topics.' + evtData.source] = {$exists: true};
db.collName.find(query)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多