【问题标题】:Update collection based on data in another collection in MongoDB根据 MongoDB 中另一个集合中的数据更新集合
【发布时间】:2013-09-23 01:17:11
【问题描述】:

我有两个 MongoDB 集合。 questions:

{
    "_id" : "8735574",
    "title" : "...",
    "owner" : {
        "user_id" : 950690
    },
}
{
    "_id" : "8736808",
    "title" : "...",
    "owner" : {
        "user_id" : 657258
    },
}

users:

{
    "_id" : 950690,
    "updated" : SomeDate,
    ...
}
{
    "_id" : 657258,
    "updated" : SomeDate,
    ...
}

users 中的条目必须基于questions 定期创建或更新。因此,我想从questions 中获取所有user_ids,它们要么根本没有users 中的条目,要么它们在users 中的条目比updated 更多。一天前。

为了实现这一点,我可以从questions 中读取所有user_ids,然后从结果中手动删除不需要更新的所有用户。但这似乎是一个糟糕的解决方案,因为它读取了大量不必要的数据。有没有办法以不同的方式解决这个问题?某种集合连接会很棒,但我知道这在 MongoDB 中(真的)不存在。有什么建议吗?

PS:将这些集合嵌套到一个集合中不是解决方案,因为users 也必须从其他地方引用。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    不幸的是,没有很好的方法可以做到这一点,而且由于您没有读取所有数据并手动操作数据的情况下无法访问索引来执行此客户端操作,因此这是唯一的方法。

    可以通过查询用户集合然后对问题集合执行$in 来完成从用户到问题的连接,但这确实是唯一可以进行的优化。

    【讨论】:

    • 太糟糕了,但还是谢谢你。我现在将在 questions 项目中存储一个 updated 日期,以便我可以直接使用它。
    • @str 是的,这可能是值得重复的事情,唯一的问题是您需要在更新该字段时更新所有问题,虽然它可能还不错
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2013-07-31
    • 2015-09-14
    • 2021-12-19
    • 2022-10-15
    相关资源
    最近更新 更多