MongoDB使用$returnKey获取字段名和值

MongoDB使用$returnKey获取字段名和值,mongodb,Mongodb,我在MongoDB上遇到了麻烦。我试图获取一个字段的值,其中字段名我不知道,并使用检索到的值检查集合中是否存在其他文档。我只知道字段可能包含的值的模式 让我解释一下,我有以下文档结构: db.blogs_data.find({"_id.r":"http://blog_post_url/authors"}).pretty(); { "_id" : { "r" : "http://blog_post_url/authors" }, "author:_1" :

我在MongoDB上遇到了麻烦。我试图获取一个字段的值,其中字段名我不知道,并使用检索到的值检查集合中是否存在其他文档。我只知道字段可能包含的值的模式

让我解释一下,我有以下文档结构:

db.blogs_data.find({"_id.r":"http://blog_post_url/authors"}).pretty();
{
    "_id" : {
        "r" : "http://blog_post_url/authors"
    },
    "author:_1" : {
        "u" : "People:C2CE29E7"
    },    
    "author:_2" : {
        "u" : "Organisations:0B2A962A-8D1C"
    },
    "rdf:type" : {
        "u" : "rdf:Seq"
    }
}
此处author:_2可以是类似于:author:_N(数字)的任何内容。 现在,上述声明中每个序列的详细信息存储为单独的文档,如:

db.blogs_data.find({"_id.r":"People:C2CE29E7"}).pretty();
{
    "_id" : {
        "r" : "People:C2CE29E7"
    },
    "rdf:type" : {
        "u" : "foaf:Person"
    },
    "foaf:name" : {
        "l" : "McCabe, Catherine"
    }
}


db.blogs_data.find({"_id.r":"Organisations:0B2A962A-8D1C"}).pretty();
{
    "_id" : {
        "r" : "Organisations:0B2A962A-8D1C"
    },
    "rdf:type" : {
        "u" : "foaf:Organisations"
    },
    "foaf:name" : {
        "l" : "ABC Publications"
    }
}
现在,我需要获得每个/authors序列的值,其中author值模式类似于:“organizations*”,并使用序列到的值 检查作者详细信息文档,比如它是否确实存在。 我检查了MongoDB,它有$returnKey,它说返回索引键或多个键, 但是,文档似乎不完整,对我来说也有点混乱,比如: 如果$returnKey设置为true,并且查询不使用索引执行读取操作,则返回的文档将不包含任何字段

我不知道这个值的确切位置,只知道它里面的值。我也检查了这个,但是,它在集合中返回唯一的键

在我看来,Mongo查询无法完成我在这里想要做的事情,为此我必须编写一个JS脚本。是否有人面临相同或类似的问题?对于JS,应该考虑什么作为起点


关于,

我通过以下方式解决了我的问题:

使用正则表达式获取id.r以/authors结尾的所有mongo文档,并在authors文档中循环遍历每个author:N,使用author\uun的值检查实际作者文档的存在性


Ravish

看看这个想法,看看你是否能把它应用到你的问题上。嗯,不确定。我看到的大多数解决方案都是使用字段名的,然而,在这里,我知道字段内的值,但不知道字段名。。。