MongoDB使用$returnKey获取字段名和值
我在MongoDB上遇到了麻烦。我试图获取一个字段的值,其中字段名我不知道,并使用检索到的值检查集合中是否存在其他文档。我只知道字段可能包含的值的模式 让我解释一下,我有以下文档结构: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" :
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看看这个想法,看看你是否能把它应用到你的问题上。嗯,不确定。我看到的大多数解决方案都是使用字段名的,然而,在这里,我知道字段内的值,但不知道字段名。。。