0

我在使用 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 可以是:作者:_N(数字)。现在,上述 decument 中每个序列的详细信息都存储为单独的文档,例如:

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 的每个序列的值,其中作者值模式类似于:“Organisations*”,并使用序列中的值来检查作者详细信息文档,例如它是否确实存在。我检查了 MongoDB,它确实有 $returnKey,它说返回索引键或键, 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,应该考虑什么作为起点?

问候,

4

1 回答 1

0

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

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

狂欢

于 2013-06-05T07:39:01.707 回答