0

我在创建模式和以“正确”方式设置数据库时遇到了一个小难题。我有一个包含包含 4 个不同数组的对象的集合。集合条目中的对象类似于:

itemInCollection{
    ...
    theObj: {arr1: ["user1685", "user5342"], arr2: ["user1432"], arr3: [], arr4: ["user1632", "user2312", "user6452"]},
    ...
}

我创建的架构已经要求所有数组项都是唯一的,但我也希望没有一个数组包含与另一个数组相同的条目。我有时还需要将已经在一个数组中的项目移动到另一个数组(当然,从旧数组中删除条目,因为所有数组都不应该包含相同的条目)。这显然不是跟踪此类事件的最佳方式,或者是吗?

到目前为止,我有 4 个查询,分别检查每个数组的某个条目,另一个查询如果没有找到条目,则将条目添加到相应的数组中......以及另一个查询,它将删除可能已找到的条目在将它添加到不同的数组之前。

有没有更好的方法来设置数据库来跟踪这样的事情?或者是否有一种查询多个数组而不是使用 6-7 个不同查询的动态方式?

提前感谢大家的时间和帮助:)

4

1 回答 1

3

You could structure your "user" data as subdocuments instead of as strings like this:

itemInCollection{
    ...
    theObj: [
        { userid: "user1685", type: "arr1" },
        { userid: "user5342", type: "arr1" },
        { userid: "user1432", type: "arr2" },
        { userid: "user1632", type: "arr4" },
        { userid: "user2312", type: "arr4" },
        { userid: "user6452", type: "arr4" }
    ],
    ...
}

With this structure in place, it should be easier to ensure uniqueness (at this stage, unfortunately, there is no way to ensure uniqueness of a particular field inside an array - see this link).

于 2018-08-15T21:18:56.193 回答