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

时间:2013-04-06 08:56:39

标签: mongodb

我遇到了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"
    }
}

这里作者:_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的每个序列的值,其中作者值模式如下:“Organizations *”,并使用序列中的值 检查作者详细信息文档,如果它实际存在与否。 我已经检查了MongoDB,它确实有$ returnKey,它表示返回Index键或Keys, http://docs.mongodb.org/v2.2/reference/operator/returnKey/#op._S_returnKey 但是,文件似乎不完整,对我来说也有点混乱,比如: “如果$ returnKey设置为true且查询不使用索引来执行读取操作,则返回的文档将不包含任何字段。”

好吧,我不知道这个值的确切键,只是它里面的值。我还检查了这个MongoDB Get names of all keys in collection但是,它会在集合中返回唯一键。

在我看来,Mongo查询不会做我想做的事情,而且我要编写一个JS脚本来执行此操作。是否有人面临相同或类似的问题?在JS的情况下,应该考虑什么作为起点?

此致

1 个答案:

答案 0 :(得分:0)

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

使用正则表达式获取所有mongo文档,其中 id.r以 / authors 结尾,并循环遍历每个作者 :N 内部作者文档并使用 author_:N 的值来检查实际作者文档是否存在。

奸污