我的mongodb文档中有以下结构:
/* a text */
{
"_id" : 1,
... /* fields not relevant here */
...
...
"full_text" : "..." /* some text */
}
/* a bloc */
{
"_id" : ...,
"name" : "aaa",
"description" : "bbb",
"excerpts" : [
{
"_id" : ...,
// some more fields irrelevant here
"excerpt" : "some-part-of-text-1",
"text_id" : 1
},
{
"_id" : ...,
"excerpt" : "some-part-of-text-x",
"text_id" : x
},... /* array of parts of any stored texts */
]
}
bloc文档包含一系列有关db。
的文本的摘录我设法进行$ lookup查询并获得原始文本而没有麻烦,但这会将'original_text'作为相关文本的数组返回(每个bloc及其各自的字段和一个包含相关字段的新'original_text'数组文本)。
我的解决方案让我得到一个数组中的文本,但是这个数组可能比摘录一个(多个摘录的情况引用相同的文本)或不同的顺序(导致摘录[x]错误引用text [x],正如我预期的那样使用)。
我想要的是一种方法,让每个摘录与各自的原始文本并排,这样我就可以轻松浏览数据。
我可以在服务器端进行此操作,重新组织返回的数据,但在我看来,像db-side解决方案更合适,但我是MongoDB的新手,我很难解决这种情况。
(使用带有mongoid和mongo 3.6的轨道5,顺便说一句)