考虑具有以下结构的文档的集合 webs

[

{

"_id": ObjectId("5631e7f6cc6b441000ad9033"),

"name": "web1",

"pagehits": [

{

"ip": "12.34.56.78",

"hits": [

ISODate("2015-10-28T11:06:37.536+0000"),

ISODate("2015-11-28T11:06:37.536+0000")

]

}

]

}

]

Web(当然)有 _id , name ,(其他未提及的属性)和 pagehits 数组 . 每个数组项对应一个ip . 此外,每个页面命中都会保存为 pagehit 项目的 hits 子数组中的日期 .

因此, add pagehit 函数的伪算法看起来像

find 网址提供 ObjectId

已经有一个当前用户ip的数组项?

yes :将当前日期追加到已存在的 pagehits 数组元素

no :向 pagehits 数组附加一个新项目,其中ip是当前用户ip,而 hits 是仅包含当前日期的数组 .

是否可以通过单个MongoDB调用( findOneAndUpdate )实现此 insert hit 函数?

保证所有网络都存在,因此无需在集合中插入整个文档 .

可能发生的两种情况的示例:

Case 1) 使用IP 192.168.0.1命中(尚未列在清单中):添加了一个新的子文档

[

{

"_id": ObjectId("5631e7f6cc6b441000ad9033"),

"name": "web1",

"pagehits": [

{

"ip": "12.34.56.78",

"hits": [

ISODate("2015-10-28T11:06:37.536+0000"),

ISODate("2015-11-28T11:06:37.536+0000")

]

},

{

"ip": "192.168.0.1",

"hits": [

ISODate("2016-04-08T11:25:37.536+0000")

]

}

]

}

]

Case 2) 使用IP 12.34.56.78命令(已在列表中):当前日期被推送到命中数组

[

{

"_id": ObjectId("5631e7f6cc6b441000ad9033"),

"name": "web1",

"pagehits": [

{

"ip": "12.34.56.78",

"hits": [

ISODate("2015-10-28T11:06:37.536+0000"),

ISODate("2015-11-28T11:06:37.536+0000"),

ISODate("2016-04-08T11:25:37.536+0000")

]

}

]

}

]

mongodb 插入一个数组 java_mongodb:推送到数组元素的子数组或添加到数组(如果不存在)...相关推荐

  1. 开发一个短信推送工具需要怎么做

    开发一个短信推送工具需要以下几步: 选择合适的编程语言,比如说 Python.Java 等. 选择短信 API 提供商,比如 Twilio.Alibaba Cloud 等. 注册一个账号,获取 API ...

  2. 苹果cms百度php推送示例,苹果cms用宝塔定时采集+添加百度推送教程

    苹果cms用宝塔定时采集+添加百度推送教程 准备工作 1,安装的宝塔面板(和苹果cms在不在一个服务器上都可以) 2,安装好的苹果CMS v10 3,采集需要先绑定好分类,生成需要下配置好url模式 ...

  3. java 最大子数组_[剑指offer题解][Java]连续子数组的最大和

    前言 众所周知,<剑指offer>是一本"好书". 如果你是个算法菜鸡(和我一样),那么最推荐的是先把剑指offer的题目搞明白. 对于剑指offer题解这个系列,我的 ...

  4. 如何用 Netty 设计一个百万级推送服务?

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

  5. 企业微信应用设置可信域名_企业微信应用变更域名,可信域名只能设置一个导致原有推送的模板消息(旧域名)直接提示需使用应用可信域名...

    事故过程: 域名从A变成B后,旧有的推送消息点击直接提示 [redirect_uri需要使用应用可信域名,原有的模板消息推送中带有旧的域名地址A], 而此时,企业微信管理后台该应用的可信域名已经变成了 ...

  6. python推送app_(原创)一个app消息推送机制的设计与实现

    手机上形形色色的app会给我们推送各种消息,那么一条消息的推送是如何实现的呢?下面让我从某个app的python后端开发的角度来解析一下. 一.背景 推送的消息包括两大类:运营人员手动编辑.推送的公告 ...

  7. 用Pomelo 搭建一个简易的推送平台

    2019独角兽企业重金招聘Python工程师标准>>> <h2 id="menuIndex0">前言</h2> <p>实际上, ...

  8. python自动推送消息_用Python设计一个可以自动推送微信消息提醒的备忘录

    请关注微信公众号:金融数学 FinancialMathematics日常工作生活中,事情一多,就会忘记一些该做未做的事情.即使有时候把事情记录在了小本本上或者手机.电脑端备忘录上,也总会有查看不及时, ...

  9. python实现新闻网站_Python+MySQL+HTML5技术实现一个新闻定制推送系统

    三.研究的基本思路和方法.技术路线.实验方案及可行性分析 (一)基本思路和方法 1.数据库的建立 确定模块与模块之间的关系,遵循数据库设计的原则,设计好数据库表.字段,并且要方便后期的维护. 2.系统 ...

  10. pycharm git gitee 如何将红色文件推送到repository?(将工作区内容添加到暂存区)(git add)

    如图,test.txt和train.txt俩文件不在云端,平时的commit -> push都不管用,怎么把它们推送上去呢? 如图,先选中,然后git-> add,再commit,再pus ...

最新文章

  1. 6个步骤,告诉你如何用树莓派和机器学习DIY一个车牌识别器!(附详细分析)...
  2. PowerDesigner逆向生成
  3. hdu4885 有 限制的最短路
  4. spring @order控制对象的顺序
  5. 初学Python(一)——数据类型
  6. P2280 [HNOI2003]激光炸弹
  7. c#串口程序接收数据并打印_C#程序可打印各种数据类型的大小
  8. 模式窗体中调用父页面Javascript
  9. comsol稀物质传递_COMSOL电弧仿真
  10. allavsoft mac版:支持从各种视频分享网站下载视频
  11. 2018美赛数学建模竞赛论文(隐私成本)
  12. 易语言自定义数据类型转c,转换JSON结构为易语言代码自定义数据类型
  13. NodeJS开发简易图书管理系统
  14. outlook正在使用outlook数据文件(.ost)旧的副本,请退出outlook,删除此文件,然后重启outlook。
  15. bcc语料库下载_语料库汇总
  16. Edit Control响应全选(Ctrl+A)
  17. redmi k60参数 红米k60怎么样 redmi k60优缺点
  18. x must be 1d
  19. 智能门锁暗藏的物联网安全危机
  20. 如何运用python画名字_[原创]如何使用Python在好友画我上画一个标准的汉字震惊朋友圈...

热门文章

  1. Log-Polar——关于对数极坐标
  2. 计算机专业新手博客,【转载】学计算机必读献给计算机专业大一新生(1)
  3. Markdown制作表格
  4. 鸿蒙能兼容java吗,鸿蒙系统能不能兼容windows的所有应用软件?
  5. spring5.0学习笔记2
  6. 计算机操作系统笔记(六)
  7. java rsa2加密算法_java RSA加密解密
  8. Tensorflow CUDA及CUDNN版本对应关系表查询
  9. 汇编语言和C语言的比较
  10. php 抓取 wordpress 文字内容,WordPress获取页面、文章内容代码