我想要做的是以下。
我有可以存在于多个文档中的对象,虽然我不确定这是否是最佳实践,但我使用它们的 ObjectId 作为指针。
文件 A
{
"_id": {
"$oid": "51a02dade4b02780aeee5ab7"
},
"title": "My Document A",
"artifacts": [
"51a81d8ee4b084336fea2d33",
"asdfsdfe4b084336fea2d33"
]
}
文件 B
{
"_id": {
"$oid": "51a02dade4b02780aeee5ab7"
},
"title": "My Document A",
"artifacts": [
"51a81d8ee4b084336fea2d33",
"123454b084336fea2d33"
]
}
单个工件看起来像。如果此工件发生更改,则无需更新它所在的文档:
{
"_id": {
"$oid": "51a81d8ee4b084336fea2d33"
},
"title": "Artifact A",
"media": {
"player": "video",
"source": "http://www.youtube.com/watch?v=12334456"
}
}
我想做的是获取一个扩展列表,其中包含文档 A 或文档 B 中显示的所有工件的扩展列表,例如:
[{
"_id": {
"$oid": "51a81d8ee4b084336fea2d33"
},
"title": "Artifact A",
"media": {
"player": "video",
"source": "http://www.youtube.com/watch?v=12334456"
}
},
{
"_id": {
"$oid": "123455e4b084336fea2d33"
},
"title": "Artifact B",
"media": {
"player": "video",
"source": "http://www.youtube.com/watch?v=12334456"
}
}]
我过去的做法是从客户端发布一个 Id 列表,然后使用
{_id: { $in: userQuestArray} }
但如果我不断地从客户端发回节点,它似乎有点低效。特别是如果我发布的数组有数百个项目。