mongodb学习笔记–C++操作mongodb

Qt使用MongoDB的c++接口:连接、创建、写入、读取 使用c++接口,连接数据库,创建表格,查找表格中的数据,写入一个图片文件,并从数据库中拿取图片数据再保存为图片。。例如:好了,直接上代码。 阅读详情

mongodb学习笔记–C++操作mongodb

  在学习mongodb过程当中,必须学习的就是用C++(Java、PHP、C#等)操作mongodb,这里讲述C++操作mongodb,在官方提供的mongo-cxx-driver驱动中有相关的操作例子,可以结合例子学习,目录是mongo-cxx-driver-legacy-1.0.0-rc0\src\mongo\client\examples,这里针对几个重要的点讲述。

1. C++连接mongodb

(1)有无密码都适用

mongo::client::GlobalInstance instance;
if (!instance.initialized()) {
    std::cout << "failed to initialize the client driver: " << instance.status() << std::endl;
    return EXIT_FAILURE;
}

std::string uri = "mongodb://username:password@127.0.0.1:27017";
std::string errmsg;

ConnectionString cs = ConnectionString::parse(uri, errmsg);

if (!cs.isValid()) {
    std::cout << "Error parsing connection string " << uri << ": " << errmsg << std::endl;
    return EXIT_FAILURE;
}

boost::scoped_ptr<DBClientBase> conn(cs.connect(errmsg));
if (!conn) {
    cout << "couldn't connect : " << errmsg << endl;
    return EXIT_FAILURE;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

  这种方式有密码和无密码的情况都适用,"username"为登录名,"password"为登录密码;无密码时去掉"username:password@"即可连接,这样连接方式比较常用。

(2)常规连接操作(不带密码连接)

mongo::DBClientConnection conn; 
mongo::Status status = mongo::client::initialize();
if (!status.isOK()) {
    MongoException m(-1, "failed to initialize the client driver: " + status.toString());
    return -1;
}
string url = "localhost:27017";
if (!conn.connect(url, errmsg)) {
    MongoException m(0, "couldn’t connect : " + errmsg);
    return -1;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

通过这种方式可建立与mongodb的连接,但是是未带权限的连接。

(3)带密码连接

conn.auth( "admin" , "username" , "password" , errmsg );
  • 1

  其中"admin"为验证用户的所在数据库,一般在"test.system.users"或"admin.system.users"表中,所以填库名"test"或"admin","username"为登录名,"password"为登录密码。 
或者下面的auth方式也可以:

conn.auth(BSON(
    "user" << "root" << "db" << "admin" <<
    "pwd" << "password" << "mechanism" << "DEFAULT"
));
  • 1
  • 2
  • 3
  • 4

根据mongodb的设置更改传递给函数conn.auth的参数值。

2. C++查询数据

const char* ns = "test.first";
conn->findOne(ns, BSONObj()); //查询一条数据
conn->findOne(ns, BSONObjBuilder().append("name", "joe").obj()); //条件查询
  • 1
  • 2
  • 3

3. C++插入数据

const char* ns = "test.first";
conn->insert(ns, BSON("name" << "joe" 
                      << "pwd" << "123456" 
                      << "age" << 20));
  • 1
  • 2
  • 3
  • 4

4. C++删除数据

const char* ns = "test.first";
conn->remove(ns, BSONObj()); //删除所有
conn->remove(ns, BSONObjBuilder().append("name", "joe").obj()); //删除指定文档
  • 1
  • 2
  • 3

5. C++更新数据

(1) 在原数据基础上增加属性

const char* ns = "test.first";
BSONObj res = conn->findOne(ns, BSONObjBuilder().append("name", "joe").obj());
BSONObj after = BSONObjBuilder().appendElements(res).append("name2", "h").obj();
conn->update(ns, BSONObjBuilder().append("name", "jeo2").obj(), after); //在原数据上增加属性
  • 1
  • 2
  • 3
  • 4

这种update方式只是在原数据基础上增加属性,并不会改变指定属性值。 
(2) 更改指定的某个属性值 
想要update指定属性的值,需要用到”$set”指令,如下代码所示:

BSONObj res = conn->findOne(ns, BSONObjBuilder().append("name", "joe").obj());
//更改指定的某个属性值
conn->update("test.first", res, BSON("$set" << BSON("age" << 11)));
  • 1
  • 2
  • 3

主要想强调下update更改指定的某个属性值的方式,比较常用。

6. C++操作例子

(1) simple_client_test.cpp

/*
#if defined(_WIN32)
#include <winsock2.h>
#include <windows.h>
#endif*/
//g++ simple_client_test.cpp -pthread -lmongoclient -lboost_thread -lboost_system -lboost_regex -o simple_client_test
#include "mongo/client/dbclient.h"  // the mongo c++ driver

#include <iostream>

#ifndef verify
#define verify(x) MONGO_verify(x)
#endif

using namespace std;
using namespace mongo;
//using mongo::BSONObj;
//using mongo::BSONObjBuilder;

int main(int argc, char* argv[]) {
    if (argc > 2) {
        std::cout << "usage: " << argv[0] << " [MONGODB_URI]" << std::endl;
        return EXIT_FAILURE;
    }

    mongo::client::GlobalInstance instance;
    if (!instance.initialized()) {
        std::cout << "failed to initialize the client driver: " << instance.status() << std::endl;
        return EXIT_FAILURE;
    }

    std::string uri = argc == 2 ? argv[1] : "mongodb://127.0.0.1:27017";
    std::string errmsg;

    ConnectionString cs = ConnectionString::parse(uri, errmsg);

    if (!cs.isValid()) {
        std::cout << "Error parsing connection string " << uri << ": " << errmsg << std::endl;
        return EXIT_FAILURE;
    }

    boost::scoped_ptr<DBClientBase> conn(cs.connect(errmsg));
    if (!conn) {
        cout << "couldn't connect : " << errmsg << endl;
        return EXIT_FAILURE;
    }

    const char* ns = "test.first";

    conn->dropCollection(ns);

    //clean up old data from any previous tesets
    conn->remove(ns, BSONObj());
    verify(conn->findOne(ns, BSONObj()).isEmpty()); //verify逻辑表达式,判断是否还存在test.first,是否clenn up成功

    //test insert
    cout << "(1) test insert----" << endl;
    conn->insert(ns, 
                 BSON("name" << "joe" 
                      << "pwd" << "123456" 
                      << "age" << 20));
    verify(!conn->findOne(ns, BSONObj()).isEmpty());     //判断是否添加成功
    cout << "insert data : " << conn->findOne(ns, BSONObj()) << endl;
    cout << "insert success!" << endl;

    // test remove
    cout << "(2) test remove----" << endl;
    conn->remove(ns, BSONObj());
    verify(conn->findOne(ns, BSONObj()).isEmpty());
    cout << "remove success!" << endl;

    // insert, findOne testing
    conn->insert(ns, 
                 BSON("name" << "joe" 
                      << "pwd" << "234567" 
                      << "age" << 21));
    {
        BSONObj res = conn->findOne(ns, BSONObj());
        verify(strstr(res.getStringField("name"), "joe"));
        verify(!strstr(res.getStringField("name2"), "joe"));
        verify(21 == res.getIntField("age"));
    }
    cout << "insert data : " << conn->findOne(ns, BSONObj()) <<endl;

    // test update
    {
        BSONObj res = conn->findOne(ns, BSONObjBuilder().append("name", "joe").obj());
        verify(!strstr(res.getStringField("name2"), "jeo"));

        BSONObj after = BSONObjBuilder().appendElements(res).append("name2", "w").obj();
        cout << "(3) test update name joe add name2 name3----" << endl;
        //upsert type1 update method
        conn->update(ns, BSONObjBuilder().append("name", "joe").obj(), after);
        //res = conn->findOne(ns, BSONObjBuilder().append("name2", "w").obj());
        verify(!strstr(res.getStringField("name2"), "joe"));
        verify(conn->findOne(ns, BSONObjBuilder().append("name", "joe2").obj()).isEmpty());
        //cout << " update1 data: " << conn->findOne(ns, BSONObj()) << endl;
        cout << " update1 data : " << conn->findOne(ns, Query("{name2:'w'}")) << endl;

        //upsert type2 update method 更改指定的某个属性值 
        const string TEST_NS = "test.first";
        conn->update("test.first", res, BSON("$set" << BSON("age" << 11)));
        cout << " update2 data : " << conn->findOne(ns, BSONObj()) << endl;
        res = conn->findOne(ns, BSONObjBuilder().append("name", "joe").obj());

        //upsert type3 update method
        try
        {
            after = BSONObjBuilder().appendElements(res).append("name3", "h").obj();
            conn->update(ns, BSONObjBuilder().append("name", "joe").obj(), after);
        }
        catch (OperationException&)
        {
            cout << " update error: " << conn->getLastErrorDetailed().toString() << endl;
        }
        verify(!conn->findOne(ns, BSONObjBuilder().append("name", "joe").obj()).isEmpty());
        //cout << " update3 data: " << conn->findOne(ns, BSONObj()) << endl;
        cout << " update3 data : " << conn->findOne(ns, Query("{name3:'h'}")) << endl;

        cout << "(4) test query-----" << "\n query data : " 
            << conn->findOne(ns, BSONObjBuilder().append("name", "joe").obj()) << endl;
        cout << " Query data : " << conn->findOne(ns, Query("{name:'joe'}")) << endl;
    }

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127

(2) makefile文件

CC = g++
TEST = simple_client_test

$(TEST):
    $(CC) $@.cpp -pthread -lmongoclient -lboost_thread -lboost_system -lboost_regex -o $@
    ./$(TEST)
    rm -f $(TEST)
run:
    ./$(TEST)

clean:
    rm -f $(TEST)
c++操作mongodb Windows 上 1、下载mongodb: http://www.mongodb.org/downloads 双击即可快速安装。2、添加环境变量 3、cmd管理员运行开启mongodb服务mongod.exe --dbpath "E:\Program Files\MongoDB\data" --logpath "E:\Program Files\MongoDB\log\mongodb.log" -install 阅读详情

相关推荐

MongoDB C++ Driver Windows 编译记录

目录-记录MongoDB win10 64bit VS2010过程安装需求1、mongo-cxx-driver 贴git地址: https://github.com/mongodb/mongo-cxx-driver 当前最新版本的的是3.1.1。 需求的是cmke 与 VS2015。与我的环境不同,就没有选择了。 https://github.com/mongodb/mongo-cxx-dri

chenzy945的记录 5341

C++ 实战Mongodb CRUD操作基本用法

mongo c++ driver crud + 高级操作

weixin_44834554的博客 2846

C++库封装mongodb(跨平台开发)

我的初衷是在Linux平台下只提供动态库和头文件,windows平台下提供静态库和头文件给开发者,这个库mongo-proxy对外提供了一些对mongodb的连接,增删改查,创建索引,聚合等操作的封装,开发者只需要关心接口如何调用,而不需要关心接口是如何实现的,也不需要关心mongo-c-driver的相关依赖,这里我抽象出mongo_proxy类,

yolo模型训练找我,AI游戏合作找我 3万+

C++调用MongoDB数据库

C++调用MongoDB数据库(一) 一、简介 本篇文章主要讲述如何使用C++调用MongoDB数据库实现增、删、查、改。 MongoDB MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,一般多用于WEB应用进行可扩展的高性能数据存储。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。 MongoDB文档 MongoDB中的记录是一个文档,它是由

m0_46185044的博客 7163

C++ MongoDB 连接池代码实现

该代码是C++ MongoDB的连接池代码实现。代码封装了一个连接池类对象,通过该对象提供的连接池来操作MongoDB,提升了性能,减少了数据库连接资源的开销。

Adversarial Texture for Fooling Person Detectors in the Physical World

本文提出了对抗纹理的想法(AdvTexture),与基本补丁攻击不同对抗纹理可以生成任意大小,可以覆盖任意大小的不了,并且纹理的任何局部都有对抗性的效果。当衣服被对抗纹理覆盖是,摄像头捕捉到的每一个局部区域都可以攻击探测器,这成功解决了片段缺失的问题。提出了一种两阶段生成方法:基于环形收割的可扩展生成攻击(TC-EGA)来制作广告纹理。第一阶段,训练一个全卷积网络FCN作为生成器,通过采样随机潜变量作为输入来产生纹理(不同于GAN中传统的生成器架构,每一层都使用卷积运算)......

weixin_49171105的博客 1067

mongodb学习笔记--C++操作mongodb

mongodb学习笔记–C++操作mongodb   学习mongodb过程当中,必须学习的就是用C++(Java、PHP、C#等)操作mongodb,这里讲述C++操作mongodb,在官方提供的mongo-cxx-driver驱动中有相关的操作例子,可以结合例子学习,目录是mongo-cxx-driver-legacy-1.0.0-rc0\src\mongo\client\examples,这里针对几个重要的点。

wonderomg 1万+

MSP430开发入门:手把手教你用IAR EW430从建工程到烧录调试(附F5529配置)

本文详细介绍了如何使用IAR Embedded Workbench(EW430)进行MSP430F5529开发板的嵌入式开发,从环境搭建、工程配置到硬件调试全流程。通过实战示例和关键配置技巧,帮助开发者快速掌握MSP430开发的核心要点,包括LED控制、定时器使用和低功耗优化等实用技术。

weixin_30240349的博客 391

MongoDB学习笔记

MongoDB 实战 官方文档地址: https://docs.mongodb.com/manual/ 1.简介 1.1 说明 官方 MongoDB是一个文档数据库,旨在方便应用开发和扩展。 百度百科 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储

小皮皮LL的博客 2694

SolidWorks有限元分析流程

对于很多专业,在进行设计完成后,为了缩短开发周期,往往需要配合仿真结果进行,机械行业更是如此。平时大家多采用专业有限元仿真软件进行仿真分析,如ANSYS;不过SolidWorks软件因为制图简单,同时存在专用的有限元仿真模块Simulation,对于初学者往往更加适用,下面简单介绍下SolidWorks Simulation仿真流程。 1. 分析流程 关键步骤如下: **(1)创建算例;**对模型的每次分析都是一个算例,一个模型可以包含多个算例。 **(2)应用材料;**指定模型的材料属性,如铝合金、钢材等

DYH_BK的博客 3万+

【AUTOSAR-COM】Transmission Mode 和 Transfer Property

1.COM模块的基本概念 首先在描述Transmission Mode 和 Transfer Property之前,有必要对COM模块的基本处理有一个直观的理解,我所描述的和对概念理解的也不一定完全正确。 Signal:指的是通信协议中的,一条报文中所保存的若干信号。 I-PDU:至少在COM模块中,可以理解为一条报文。 上图是在CANdb软件中编辑一个报文的Layout的界面,可以很形象的将I-PDU对等为这里的一条Message,而Signal就是需要在Message中需要摆放的Signal

tim_hoven的博客 4633

MongoDB 学习笔记

官方MongoDB是一个文档数据库,旨在方便应用开发和扩展。百度百科MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

JavaAlenboy 475

MoveIt避坑指南:UR机械臂编程中常见的5个错误及解决方法

本文针对UR机械臂与MoveIt集成开发中的常见问题,总结了五个典型错误及其解决方案,包括关节限位设置、坐标系混淆、规划器选择、运动学求解器配置以及线程资源管理。重点分析了正逆运动学求解错误的原因,并提供了调整容忍度、显式指定坐标系、选择合适规划器及优化IK配置等实用代码示例,帮助开发者提升编程效率与系统稳定性。

root9的博客 433

mongoDB基本操作

mongoDB1.什么是MongoDB2.MongoDB特点3.MongoDB体系结构4. MongoDB数据类型5.win下载安装5.1下载5.1启动6.命令行操作6.1查询数据库6.2新增与查询6.3修改与删除6.4 统计条数6.5 模糊查询6.6 大于 小于 不等于6.7包含与不包含6.8条件连接6.9列值增长7.mongodb-driver使用7.1 环境准备7.2使用mongodb-driver7.2.1查询所有7.2.2抽取连接和关闭7.2.3根据_id查询7.2.4 新增7.2.5 修改7.2

weixin_46237429的博客 852

STM32硬件SPI驱动W25Q128实战:从CubeMX配置到DMA高速读写(附完整代码)

本文详细介绍了如何使用STM32硬件SPI驱动W25Q128 Flash存储器,从CubeMX配置到DMA高速读写的完整实战指南。内容包括硬件连接方案、SPI参数优化、DMA配置技巧以及完整代码实现,帮助开发者快速掌握高速稳定的SPI Flash存储解决方案。

weixin_33734785的博客 184

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

专注于编程、AI、人工智能等多个领域内容研究和分析 591

MongoDB基本操作

MongoDB是一种面向文档的NoSQL数据库,具有高性能、高扩展性等特点。它采用类似JSON的BSON格式存储数据,支持复杂数据类型和强大的查询功能。MongoDB的体系结构包含文档、集合和数据库三个层次,适合存储社交类应用等读多写少、数据量大的场景。安装MongoDB后可通过命令行或客户端工具操作,数据库和集合会在首次插入数据时自动创建。相比传统关系型数据库,MongoDB在非结构化数据存储方面具有明显优势。

qq_34249468的博客 670

kylinos-SP3的软件包降级到V10-SP1中的版本

如果想再次回退到原来版本,将repo改为原来的SP3版本,然后执行yum history 查看ID号,执行yum history rollback ID就可以恢复了。此时我们发现已安装的版本是1.32-2.ky10,而sp1网络源里的版本是1.30-11.ky10,我们将降级安装网络源中的低版本软件包。近期有个客户想要把kylinos-V10-sp3的软件包降级到kylinos-V10-SP1的版本。3、以tar包为例,查看已安装版本及网络源中其他版本。1、查看系统版本,确认是V10-SP3。

太极淘的博客 1103

Python操作Mongodb

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 1.创建连接 复...

qq_42505882的博客 224

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot整合Mongodb

MongoDB是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库。

知足上进,不负野心。 1953

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MongoDB对数据库,用户权限的操作

MongoDB 1.简介 MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

qq_44194174的博客 1949

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MongoDB5.x学习笔记

文章目录一、概述1、MongoDB简介1.1 简介1.2 发展历史1.3 特点1.4 应用场景2、MongoDB安装2.1 原生安装2.2 docker安装2.3 快捷安装二、核心概念1、概述2、数据库常用操作2.1 库和集合操作2.2 文档操作2.3 文档查询2.4 \$type3、索引\<index>3.1 原理3.2 索引操作3.3 复合索引4、聚合\<aggregate>三、应用整合1、SpringBoot整合1.1 环境配置1.2 集合操作1.3 相关注解1.4 文档查询1

Shawn的个人博客 1107

MongoDB--实战性操作

Mongodb 介绍: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档...

weixin_45383965的博客 359

高并发高可用之MongoDB

MongoDB是一个文档数据库(以JSON为数据模型),由C++语言编写。MongoDB的数据是存储在硬盘上的,只不过需要操作的数据会被加载到内存中提高效率,所以MongoDB本身很吃内存。(本文章使用4.x版本,自带分布式事务) MongoDB基于灵活的JSON文档模型,非常适合敏捷式快速开发。与此同时,其与生俱来的高可用、高水平扩展能力使它在处理海量、高并发数据应用时颇具优势。如何考虑是否选择MongoDB? 没有某个业务场景必须要使用MongoDB才能解决,但使用MongoDB通常能让你以更低的成本

Ycy的博客 2320

Mongoose使用案例–让JSON数据直接入库MongoDB

原帖地址:http://blog.fens.me/nodejs-mongoose-json/

comhaqs的专栏 2087
上一篇: MongoDB日期类型
下一篇: valgrind
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值