我遇到了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的情况下,应该考虑什么作为起点?
此致
答案 0 :(得分:0)
我通过以下方式解决了我的问题:
使用正则表达式获取所有mongo文档,其中 id.r以 / authors 结尾,并循环遍历每个作者 :N 内部作者文档并使用 author_:N 的值来检查实际作者文档是否存在。
奸污