【问题标题】:MongoDB: how to persist selected document from collectionMongoDB:如何从集合中保留选定的文档
【发布时间】:2016-02-14 10:50:55
【问题描述】:

我是 MongoDB 新手,我不知道如何最好地解决我相当基本的问题。

我的数据库中有一组“表情符号”文档。在任何给定时间,都有一个(并且只有一个)“选定”表情符号文档。这由应用程序确定和更新。怎样才能将选择哪一个的信息持久化到数据库中?

方法一: 添加一个新的集合来保存表情符号集合的这种元数据?我认为它将包含一个文档,其中包含对当前选定的表情符号文档的引用。这似乎损害了 OO 设计。包含单个文档的整个集合,用于保存单个属性。但它确实可以灵活地添加更多元数据。

方法二: 为每个表情符号文档添加一个新的布尔字段,指示它是否是当前选定的表情符号。对于每个文档,这似乎需要跟踪很多额外的信息,而只有一个文档应该具有真正的价值。我也会关心保持一致性。

我知道我不是第一个遇到此问题的人,但我找不到解决方案,这是一般情况。谢谢!

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    MongoDB 是无模式的,因此您只需将布尔字段添加到当前选定的表情符号,并在选择更改时将其删除。您应该添加解析唯一索引以更快地查询此字段。您可以使用以下语法设置字段:

    db.emojis.update({name:"b"},{$set:{selected:true}})
    

    然后像这样简单地取消设置:

    db.emojis.update({name:"b"},{$unset:{selected:""}})
    

    您可以创建以下解析唯一索引,以确保只有一个字段为 selected:true

    db.emojis.createIndex( { selected: 1 } , { sparse: true, unique: true } )
    

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      相关资源
      最近更新 更多