Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在MongoDB中模拟Auto Increment

在MongoDB中模拟Auto Increment

作者头像
LA0WAN9
发布于 2021-12-13 23:57:57
发布于 2021-12-13 23:57:57
1.1K10
代码可运行
举报
文章被收录于专栏:火丁笔记火丁笔记
运行总次数:0
代码可运行

MySQL用户多半都有Auto Increment情结,不过MongoDB缺省并没有实现,所以需要模拟一下,编程语言以PHP为例,代码大致如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

function generate_auto_increment_id($namespace, array $option = array())
{
    $option += array(
        'init' => 1,
        'step' => 1,
    );

    $instance = new Mongo();

    $instance = $instance->selectCollection('_seq', 'seq');

    $seq = $instance->db->command(array(
        'findAndModify' => 'seq',
        'query'         => array('_id' => $namespace),
        'update'        => array('$inc' => array('id' => $option['step'])),
        'new'           => true,
    ));

    if (isset($seq['value']['id'])) {
        return $seq['value']['id'];
    }

    $instance->insert(array(
        '_id' => $namespace,
        'id'  => $option['init'],
    ));

    return $option['init'];
}

var_dump(generate_auto_increment_id('foo'));
var_dump(generate_auto_increment_id('bar', array('init' => 123)));

?>

其具体实现方式主要是利用MongoDB中findAndModify命令,只要每次往MongoDB里insert对象前生成ID赋值给_id就OK了,因为它的实现满足原子性,所以不存在并发问题。

另外说明一点,findAndModify本身提供了一个upsert参数,为true的话可以自动insert,但那样就不能自定义初始值了,所以文中示例没有使用upsert。

BTW,数据库“_seq”的名字以下划线开头,这样列表的时候会排在前面,容易分辨。

参考:Auto Increment with MongoDB

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
很详细,谢谢啦
很详细,谢谢啦
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
计算列线图得分并进行危险分层
大多数情况下都是使用1代表死亡,0代表删失,这个数据集用2代表死亡。在这里没有影响,但有的R包会报错,需要注意!
医学和生信笔记
2023/10/31
6020
计算列线图得分并进行危险分层
手把手教你绘制最基础的列线图
在之前的文章中,我们介绍了列线图的含义和构建方法,本文重点介绍下绘制列线图的代码,经典的列线图如下所示
生信修炼手册
2022/06/09
2.7K0
手把手教你绘制最基础的列线图
RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线
通过RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线构建的预后模型KM显著,还需要验证其独立性?
生信补给站
2023/08/25
1.5K0
RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线
R语言之列线图的绘制应用
线图(AlignmentDiagram),又称诺莫图(Nomogram图),它是建立在多因素回归分析的基础上,将多个预测指标进行整合,然后采用带有刻度的线段,按照一定的比例绘制在同一平面上,从而用以表达预测模型中各个变量之间的相互关系。其优势在于可以直接利用图形推算出某变量的取值,如患者的指标得分或生存概率等。它在医学领域中的应用由来已久,常见的有百分位列线图和概率列线图等。百分位列线图是确定个体某指标的测量值在总体中的百分位数;概率列线图是确定某个体特定事件的发生概率,该特定事件可以是疾病的发生、复发以及预后(如死亡)等,往往由多因素二分类回归或COX比例风险模型求得。列线图是回归方程结果的可视化,常用于逻辑回归或COX回归的结果展示,依据回归的结果,按照特定的比例画出多个线段,通过做图能够便捷地推算出某个体的发病风险或生存概率。
一粒沙
2019/07/31
4.6K0
跟着Nature Plants学作图:R语言ggplot2画分组折线图并对坐标轴添加一些额外注释
https://www.nature.com/articles/s41477-022-01146-6#Sec44
用户7010445
2023/01/06
1.1K0
跟着Nature Plants学作图:R语言ggplot2画分组折线图并对坐标轴添加一些额外注释
R- 组合图(折线+条形图)绘制
就是下面这张图,在途中用条形图展示了不同季节样本浮游动物的组成情况,同时使用带误差棒的折线图来表示浮游动物生物量的变化,相当于在一幅图中同时展示了群落的相对丰度和绝对丰度。
DataCharm
2021/02/22
3.4K0
R- 组合图(折线+条形图)绘制
Python数据分析之matplotlib(提高篇)
matplotlib核心剖析(http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html#commentform)
AI异构
2020/07/29
6600
Python数据分析之matplotlib(提高篇)
12个最常用的matplotlib图例 !!
折线图(Line Plot):用于显示数据随时间或其他连续变量的变化趋势。在实际项目中,可以用于可视化模型性能随着训练迭代次数的变化。
JOYCE_Leo16
2024/03/19
6480
12个最常用的matplotlib图例 !!
推荐!超赞的3D可视化图表绘制工具大汇总~~
前几期的给大家推荐了关于3D图表的绘制,好多读者私信私信小编推荐一些R语言相关的3D绘图工具? 小编这就安排,比较读者中R语言的使用者还是蛮多的。本期推文内容如下:
DataCharm
2022/05/24
1.9K0
推荐!超赞的3D可视化图表绘制工具大汇总~~
python matplotlib各种绘图类型完整总结
plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs)
Twcat_tree
2022/12/05
6.1K0
python matplotlib各种绘图类型完整总结
R语言画图
R自带的画图工具,R绘图基础图形系统的核心,plot()函数是一个泛型函数,使用plot时真正被调用的时函数依赖于对象所属的类。
靓且有猫
2024/07/21
1332
R语言Circlize包绘制和弦图
和弦图可用于表示数据间的关系和流量。外围不同颜色圆环表示数据节点,弧长表示数据量大小。内部不同颜色连接带,表示数据关系流向、数量级和位置信息,连接带颜色还可以表示第三维度信息。首尾宽度一致的连接带表示单向流量(从与连接带颜色相同的外围圆环流出),而首尾宽度不同的连接带表示双向流量。外层加入比例尺,还可以一目了然的发现数据流量所占比例。
DoubleHelix
2019/08/07
12.9K0
R语言画图par() 函数参数详解
R有着非常强大的绘图功能,我们可以利用简单的几行代码绘制出各种图形来,但是有时候默认的图形设置没法满足我们的需要,甚至会碰到各种各样的小问题:如坐标轴或者标题出界了,或者图例说明的大小或者位置遮挡住了图形,甚至有时候默认的颜色也不能满足我们的需求。如何进行调整呢?这就用到了“强大”的函数par()。我们可以通过设定函数par()的各个参数来调整我们的图形,这篇博文就是对函数par()的各个参数进行一下总结。
孙小北
2024/01/30
3650
R语言︱画图
point加点;axis右边坐标轴,mtext右边坐标轴的名称,text给出本文。
悟乙己
2019/05/26
1.3K0
R语言入门系列之二
在进行正式的数据分析之前,通常要对数据进行处理。而读取数据仅仅是最简单的,之后还要进行数据的筛选、排序、转换等。数据框是最方便的数据存储、管理对象。R有很多内置的示例数据集包括向量、矩阵数据框等,可以使用data()进行查看,接下来我们以R内置数据mtcars(32辆汽车在11个指标上的数据)为例进行分析,如下所示:
SYSU星空
2022/05/05
4.1K0
R语言入门系列之二
Fine-Gray检验、竞争风险模型、列线图绘制
竞争风险模型(Competing Risk Model)适用于多个终点的生存数据,传统的生存分析(survival analysis) 一般只关心一个终点事件(即研究者感兴趣的结局)。将其他事件均按删失数据(Censored Data)处理,要求个体删失情况与个体终点事件相互独立,结局不存在竞争风险。
医学和生信笔记
2023/02/14
1.4K0
Fine-Gray检验、竞争风险模型、列线图绘制
数据可视化 | 手撕 Matplotlib 绘图原理(二)
关于箭头和注释风格的更多介绍与示例,可以在 Matplotlib 的画廊gallery[1]中看到,尤其推荐
数据STUDIO
2021/06/24
1.5K1
没想到修个火山图这么麻烦
MAplot转录组差异基因表达展示_maplot r语言_TS的美梦的博客-CSDN博客自己也顺着这线索另外找了教程
生信菜鸟团
2023/09/09
7210
没想到修个火山图这么麻烦
python学习之matplot
import matplotlib.pyplot as plt import numpy as np import pandas as pd from mpl_toolkits.mplot3d import Axes3D import matplotlib.gridspec as gridspec from matplotlib import animation
py3study
2020/01/08
8010
R in action读书笔记(15)第十一章 中级绘图 之二 折线图 相关图 马赛克图
> plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference (mm)",main="orange tree 1growth")
Ai学习的老章
2019/04/10
6870
R in action读书笔记(15)第十一章 中级绘图 之二 折线图 相关图 马赛克图
相关推荐
计算列线图得分并进行危险分层
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验