MongoDB:使用不同的值进行更新和插入

发布于 2024-10-09 05:32:39 字数 442 浏览 6 评论 0原文

一些背景信息:我为每个用户都有一个文档,其中包含一个数组,其中包含与用户相关的最新 20 个事件。由于 MongoDB 没有此功能(限制文档内的数组),我将推送我的事件并弹出最新的事件。

我的问题:初始化文档(又名用空值填充数组)。我想原子地:

  • 创建包含具有 20 个空值的数组的文档,如果文档不存在,则推送一个值

;如果文档存在,则

  • 更新文档(在数组中推送一个值)

您还有其他建议吗?我想到的一个技巧是使用 :unique 和 :dropDups 声明索引,并始终进行初始化插入。

相关内容:MongoDB 固定大小数组实现

A little context: I have a document for each user that contains an array with latest 20 events related to a user. As MongoDB does not have this feature(to cap arrays inside a document), I will push my event and pop the latest one.

My problem: initializing the document(aka filling array with nulls). I want to atomically:

  • create document containing an array with 20 null values and push one value, if document does not exist

or

  • update document (push one value in array), if document exists

Do you have any other suggestions? A hack I thought about would be to declare a index with :unique and :dropDups, and to always make an initialization insert.

Related to: MongoDB fixed size array implementation

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我不是你的备胎 2024-10-16 05:32:39

在一次操作中还不可能。您需要 http://jira.mongodb.org/browse/SERVER-991 或 < a href="http://jira.mongodb.org/browse/SERVER-453" rel="nofollow">http://jira.mongodb.org/browse/SERVER-453。

Not possible in a single operation, yet. You want http://jira.mongodb.org/browse/SERVER-991 or http://jira.mongodb.org/browse/SERVER-453.

嘿看小鸭子会跑 2024-10-16 05:32:39

你会想尝试:
$setOnInsert

You'll want to try:
$setOnInsert

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文