mongodb创建记录时使用Object数据的问题 10C

背景:nodejs程序中,使用语句RecInfo.create({msg:json,msgType:'xx',time:'xxxxx'});向数据库插入一条记录
msgType和time没有问题,msg原型为Object.
条件:该语句会被高频使用,所以其后续操作没有写在create的回调函数里,且后续对json内容做了修改
现象:存入库中的数据包含了后续修改的内容
疑惑:按本渣之前的理解,程序运行到create后,其中的内容就已经固定下来,后续修改不会影响到存入的数据。但是若要对该现象作出解释,似乎只能是create会在实际向库中写入数据时访问json的地址来获取数据,所以会写入后续内容。
问题:上面的解释是否合理,该如何解释这个现象,mongo的create原理如何?

0

2个回答

可以尝试将“json”变量的内容转换成字符串格式,然后再用create方法测试一下,如果修改了json的内容,而后续插入数据库中的记录中msg的内容没有改变的话,
那么就表示json可能是被引用了内存地址,而非实际的值。

0
buaazhangboyu
老鱼几点了 使用这个方法测试过,string格式下数据库内容正常。想知道create底层如何实现的
12 个月之前 回复

应该是对Object等做了序列号处理或其他方式,再写入db,这里就可能存在数据引用等

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
记录一下mongoDB的使用
忽然打算进军node.js的开发领域,并且以此为工作,于是一不小心boss上投了几份简历,竟然恰好有公司回应,遂打算去试试,于是乎详细的介绍了我前端的本质,以及进军后端的决心,因为我想去试试呀,所以一不小心吹了小牛说自己可以三天拿下mongoDB,虽然事实是我其实今天上午之前对他还没有足够的了解,甚至从未接触过任何一款数据库产品,怎样呢,...
MongoDB使用学习记录
MongoDB权威指南:[url]http://wenku.baidu.com/view/4b806a18c5da50e2524d7fd9.html?pn=NaN[/url] JAVA访问MongoDB: [url]http://flychao88.iteye.com/blog/1466174[/url] [url]http://blog.163.com/...
ListBox创建时的object ids
int CCTreeControlBarView::OnCreate(LPCREATESTRUCT lpCreateStruct) rnrn if (CView::OnCreate(lpCreateStruct) == -1)rn return -1;rn rn // TODO: Add your specialized creation code herern m_MyListBox.Create(WS_CHILD|WS_VISIBLE|LBS_STANDARD|WS_HSCROLL | LBS_NOTIFY, rn CRect(10,10,1000,1000), this, IDC_LIST1);rn m_MyListBox.AddString("测试行1测试行1测试行1测试行1测试行1测试行1测试行1");rn m_MyListBox.AddString("测试行2测试行2测试行2测试行2测试行2测试行2测试行2");rn m_MyListBox.AddString("测试行3测试行3测试行3测试行3测试行3测试行3测试行3"); rn m_MyListBox.AddString("测试行4测试行4测试行4测试行4测试行4测试行4测试行4");rnrn return 0;rnrnrnrn在多文档视图中动态创建ListBox控件,为什么在View下拉菜单中Classward弹出菜单中的Object IDs下找不到创建的IDC_LIST1的对象标识呢?rnrn在resource.h中添加了 #define IDC_LIST1 135rnrnstring table中也添加了rn我在添加IDC_LIST1的双击列表框的消息响应函数rn请问问题出在哪里了?
使用easyui显示数据时,日期类型显示的object Object??
![图片说明](https://img-ask.csdn.net/upload/201501/08/1420727030_520907.jpg)nnn后台代码:nMap map = new HashMap();nmap.put("tableName", "engage_major_release");nmap.put("fields", "*");nmap.put("orderField", "mre_id");nmap.put("sqlwhere", "");nmap.put("pageSize", 2);nmap.put("pageIndex", 1);nmap.put("orderType", 0);nnList> list = this.zpBiz.queryEngage(map);nJsonConfig config = new JsonConfig();n//提供对实体中sql.Date的格式处理nconfig.registerJsonValueProcessor(java.sql.Date.class, new DateValueProcessor());nnJSONArray json = JSONArray.fromObject(list,config);nSystem.out.println(json);nSystem.out.println(list.get(0).get("regist_time"));nnresponse.setContentType("text/json;charset=UTF-8");nPrintWriter outPrintWriter = response.getWriter();nnoutPrintWriter.print(json);noutPrintWriter.close();nreturn null;
mongoDB创建集群时的报错
报错: {     "ok" : 0,     "errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: 172.24.37.141:27002 failed with No route to host",     "code" : 7...
MongoDB学习笔记:创建数据集合
官网地址:https://docs.mongodb.com/manual/reference/method/db.createCollection/#db.createCollection。 这节有点混乱,也有点尴尬,因为原本MongoDB就有些“没有规矩”。 快速创建一个集合,参考插入这一节。 集合不存在的情况下,插入一条记录就会创建集合。 稍微啰嗦一点,如下: db.test.i...
第一次使用MongoDB 插入记录遇到的问题
这里使用的是MongoDB .NET Driver,在github中名字是mongo-csharp-driver ,如何安装到项目里这里就不说了。 首先创建公用连接及获取集合的方法: public static class DBHelper { //创建全局唯一连接 private static MongoClient Client =
插入OBJECT时的问题
在窗口上建立一个OLE,选择INSERT OBJECT时,PB出错,自动关闭.我在有的机子上可以,在有的上确不行,这是什么问题啊,怎么解决啊
使用redis时的问题记录
报错信息:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.WARNING overcommit_memory is set to 0! Background save may fail un...
数据窗口object问题
在数据窗口中怎么指定如果单击某个列触发事件啊rnrn好象是什么我不太记的了rnlong idrnif this.object.name="course_id" or dw_1.object.name="course_name" thenrnid=dw_1.object.course_id[row]rnopenwithparm(w_xuanxiu_class_banji,id)rnend ifrnrn我这样写有错误啊 rn
[object Object]数据提取
[img=https://img-bbs.csdn.net/upload/201608/31/1472621451_603740.jpg][/img]rnrn请问各位大神,我获取到的数据如图片所示是[object Object]类型的,而且需要提取的data那一项是个数组....吧,rn该怎样得到id为Height、current_value为81rn以及id为LongArmLength、current_value为77rn这两项数据显示到网页上某个 里面呢?
MongoDB,创建连接池时MongoServerSettings的主要属性
MongoDB的驱动是mongodb-csharp,请教MongoServerSettings的主要属性的说明和作用,作用是重点,下面2个我不知道有什么作用。只要最关键的那几个就行了。rn[code=C#]rnMongoServerSettings settings = new MongoServerSettings();rn settings.Server = new MongoServerAddress(model.MongoDBIP, int.Parse(model.MongoDBPort));rn //最大连接池数量rn settings.MaxConnectionPoolSize = 500;rn //等待列队数量rn settings.WaitQueueSize = 10;rn mongo = MongoServer.Create(settings);rn mongo.Connect();rn[/code]rnMongoDB.Driver.dll一点注释都没有,谁有注释版本的更好了
mongodb使用二—数据(文档)
1.mongodb插入 insert();save()insert: db.collection_name.insert();db.firstCollection.insert({_id:1,title:"mongdb"}) WriteResult({ "nInserted" : 1 }) _id是为objectId为唯一的12字节的十六进制数db.collection_name.insertOn...
mongodb创建集群遇到的问题
config = { _id:"testrs", members:[{_id:0,host:"192.168.0.8:27017"}, {_id:1,host:"192.168.0.9:27017"}, {_id:2,host:"192.168.0.10:27017"}, {_id:3,host:"192.168.0.11:27017"}, {_id:4,host:"192.168.0.1
MongoDB CentOS7 启动问题记录
Starting mongod (via systemctl): Job for mongod.service failed because the control process exited with error code. See “systemctl status mongod.service” and “journalctl -xe” for details. Loaded: loa...
mongodb 当数据存在时更新数据,数据不存在时插入数据
col.update(key, data, {upsert:true});
object类型参数使用问题。
调用一个com组件。rnP_SMS.SMSClass sms = new P_SMS.SMSClass();rnobject i = "1631902";rnobject j = "1122";rnobject k = "test";rnsms.SendMessages(i,j,k);rn三个参数都是object类型,怎么运行时还是出现“参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。”错误?
关于Object 的使用问题
需要存储Object类型的数据在过程中某一个时间点的值rn dim aa as objectrn dim bb as object rn set aa = .....rn ......rn.....rnaa.xx = "mm"rnaa.yy = "nn"rn....rn set bb = aarn ....rn...rn..rnaa.xx = "xx"rnaa.yy = "yy"rn 如上所示 如何才能保证 object bb 的值不随着aa 的改变而改变?rn(实际程序中有很多的属性,把每一个值都取出存为String 不太现实)
使用Arrays.copyof时的记录
Arrays.copyof(text,length)将数组text的前length位截取放回text数组中,如果新数组长度大于原数组,则多出的将填为该数组数据类型的默认值(比如int:0 ;String:null),若小于原数组,则会填充回车符(可能我声明为utf-8?),此时要将末尾的回车符去除比如:String  str1  = Arrays.copyof(str2,length);Strin...
ajax 返回数据[Object Object]
问 这里面到底出现什么问题,rnrn前台rn[code=html]<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Validation.aspx.cs" Inherits="WebCrm.Validation" %>rnrnrnrnrnrn rn rn rn rn rn rn rnrn rnrnrn rn rn rn rn rn rn rn rn rn rn rn rn rnrn rn 验证rn rn rn 发送验证码rn rn rnrn rn rn rnrnrn[/code]rnrnASHX文件:rn[code=csharp]using System;rnusing System.Collections.Generic;rnusing System.Linq;rnusing System.Reflection;rnusing System.Text;rnusing System.Web;rnusing System.Web.Script.Serialization;rnusing System.Web.SessionState;rnusing Entity;rnusing Newtonsoft.Json;rnrnnamespace WebCrm.Codernrn /// rn /// ValidCode 的摘要说明rn /// rn public class ValidCode : IHttpHandlerrn rn HttpContext _httpContext;rn HttpCookie _cookie;rn public void ProcessRequest(HttpContext context)rn rn //不让浏览器缓存rn context.Response.ContentType = "text/plain";rn //context.Response.Buffer = true;rn //context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);rn //context.Response.AddHeader("pragma", "no-cache");rn //context.Response.AddHeader("cache-control", "");rn //context.Response.CacheControl = "no-cache";rn _httpContext = context;rn string method = _httpContext.Request["Method"].ToString();rn MethodInfo methodInfo = this.GetType().GetMethod(method);rn methodInfo.Invoke(this, null);rnrn rnrn /// rn /// 发送验证码rn /// rn public void Send()rn rn //Json数据返回格式rn Entity.ReturnsData returnsData = new Entity.ReturnsData();rn //获取对象值rn string login = _httpContext.Request["Loginid"];rn //获取当前用户缓存rn Entity.LoginInfo loginInfo = BLL.CacheBll.GetCache(login) as Entity.LoginInfo;rn if (loginInfo != null)rn rn int d = 0;rn //判断当前是否存在Cookiesrn if (_httpContext.Request.Cookies["ValidInfo"] == null)rn rn Random rand = new Random();rn d = rand.Next(100001, 999999);rn //Session["ValidCode"] = d; rn TimeSpan ts = new TimeSpan(0, 0, 15, 00);//cookie有效作用时间rn _cookie = new HttpCookie("ValidInfo");rn _cookie.Expires = DateTime.Now.Add(ts);rn _cookie.Values.Add("ValidCode", d.ToString());rn _httpContext.Response.AppendCookie(_cookie);rn BLL.EmailHelper.SendMail(d, loginInfo.DefaultMail, loginInfo.IsEnglish);rn returnsData.MessageText = loginInfo.IsEnglish ? 0 : 1;rn _httpContext.Response.Write(returnsData.MessageText);rn _httpContext.Response.End();rn rn rn rnrnrn /// rn /// 验证rn /// rn public void Validation()rn rnrn rnrn public bool IsReusablern rn getrn rn return false;rn rn rn rn[/code]
VS2010下使用MongoDB问题
请问如何连接?
MongoDB的mapreduce使用问题
[code=C/C++]rnBSONObj DBClientWithCommands::mapreduce(const string &ns, const string &jsmapf, const string &jsreducef, BSONObj query, MROutput output);rn[/code]rn这个是C++下MongoDB的mapreduce函数声明。其中有一个地方不明白,怎么获取执行mapreduce后的查询到的数据列表。该函数返回的是如下格式的BSON对象,但是我希望取得的是数据的查询结果,而不是统计结果。rn[code=C/C++]rn result : ,rn numObjects : ,rn timeMillis : ,rn ok : <1_if_ok>,rn [, err : ]rn rn[/code]
DllImport 时,object类型问题
有个程序从vb6升级到c#rnvb代码:rn[code=VB]rnPublic Declare Function gbHaspReadBlock Lib "GbHasp.dll" Alias "_gbHaspReadBlock@12" _rn (ByVal address As Long, ByVal length As Long, ByRef buffer As Any) As Longrn[/code]rnrn用工具转完的c#代码rn[code=C#]rn[DllImport("GbHasp.dll", EntryPoint = "_gbHaspReadBlock@12", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]rn public static extern long gbHaspReadBlock(long address, long length, ref object buffer);[/code]rn问题是,gbHaspReadBlock的参数 ref object buffer ,到底应该传个什么进去 ?rn传string,int等,编译都过不去 。 直接定义object传过去,运行出错 。rnrn别的方法,参数是int的,string的,写明白了,都没问题。rn就这种,object的,出问题。rn
MongoDB 数据库创建删除、表(集合)创建删除、数据增删改查
数据库使用开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 mongod --dbpath D:\mongodb 管理 mongodb 数据库:mongo (一定要在新的 cmd 中输入) 清屏:cls查看所有数据库列表show dbs 创建数据库使用数据库、创建数据库use student 如果真的想把这个数据库创建成功,那么必须插入一个数据。 数据库中不能直
使用阿里云镜像仓库创建MongoDB
1. 跳定yum仓库路径: cd /etc/yum.repos.d/ touch mongodb-org.repo cat mongodb-org.repo [mongodb-org] name=MongoDB Repository baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.1/x86...
mongodb一些使用技巧或注意事项记录
1、有的时候需要删除指定字段那一列,使用update操作。例如要删除name这一列: query json: {"name":{$exists:true}} update json: {$unset:{"name":""}} 2、数据导出,在mongodb的bin目录执行mongoexport命令并设定相关的参数,例如: ./mongo...
ubuntu16.04 安装MongoDB 踩坑记录及使用
MongoDB官网提供的安装命令 //依次执行以下命令 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 echo &amp;amp;amp;amp;quot;deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubunt...
MongoDB存储字符串时的问题
我使用log4j将日志输出到MongoDB数据库,我想使用MDC将一个map输出到Json字符串中。rn日志中map的样式是CODE1=00022, CODE=0002rn这不符合json规范,会报错rn我就重写的map的toString()方法,输出"CODE1"="00022", "CODE"="0002"rn但是写入数据库的时候,MongoDB会将字符串中的转义字符也显示出来,\"CODE1\"=\"00022\", \"CODE\"=\"0002\"如:。还是会有JSONParseExceptionrn有什么解决办法吗?rn我的目的就是将map以"CODE1"="00022", "CODE"="0002"样式放到MongoDB一条文档的子文档中。如rnrn rn "_id" : "$oid" : "4e126e6a8afbc8dd60f92768" , rn "LOGTIME" : "2011-07-05 09:52:42" , rn "LOGLEVEL" : "INFO" , rn "LOGTYPE" : "CODE1"="00022", "CODE"="0002" , ←←此处rn "CLASSNAME" : "test.LogTest" , rn "METHODNAME" : "main" , rn "PATH" : "test.LogTest.main(LogTest.java:49)" , rn "MESSAGE" : "java.lang.IndexOutOfBoundsException: Index: 4, Size: 0\r\n\tat java.util.ArrayList.RangeCheck(ArrayList.java:547)\r\n\tat java.util.ArrayList.get(ArrayList.java:322)\r\n\tat test.LogTest.main(LogTest.java:44)\r\n"rnrn
配置MongoDB时出现的问题
主要是自己在配置Mongo的过程中出现的一些问题,记录下来
如何创建一个object?
好象比较简单,晕了,搞不出来,rn简单化概括就是这样 我有两个变量,rn一个string型的 xrn一个一维ArrayList型的 yrn如何把x和y中的所有值保存到一个新建的object[]中去呢?
Object arx 实体创建
vc++与Object arx 创建实体
创建object报错!
[code=SQL]CREATE OR REPLACE TYPE emp_type AS OBJECTrn  (empno NUMBER(4);rnrn   ename VARCHAR2(10);rn   job VARCHAR2(9);rn   mgr NUMBER(4);rn   hiredate DATE;rn   sal NUMBER(7,2);rn   comm NUMBER(7,2)rn  );[/code]rnrnrn在plsql的sql windows窗口下,执行报如下错误:rnCompilation errors for TYPE SCOTT.EMP_TYPErnrnError: PLS-00103: Encountered the symbol "" when expecting one of the following:rn rn ( not external JAVA_ BOUND_rnLine: 2rnText:   (empno NUMBER(4);rnrn这个如何弄呢?rn
创建ole object
只知道 class id ,怎么在c#中用呢
创建一个Object()对象
一般创建Object()对象的时候,我们常用这种写法,如: var preson=new Object(); 或者用另外一种 对象字面量 表示法 var preson={         name:"jofr",         age:25 } 这里需要注意的是,name  后面是逗号 ,   不要写成分号 :
js创建简单的object
简单的js封装
如何创建Insertable Object
那位大虾用delphi编写过可插入对象的代码,我不知道用delphi编写这玩艺从何开始。rn有一两个例子最好。是不是编写ActiveX Server?然后呢?我看以前很早的turbo pascal for windows倒有个例子,不过太老土了。先谢谢了,给50分
★★关数据窗口Object的问题?
如何能把OBJECT的名称用变量来代替,怎么写?rn如dw_1.object.st_1.x=111rn st_1 用变量来代替怎么写?rn
Object的一些方法记录
今天在和一个腾讯出来的面试官聊天,被问到了几个关于对象和原型的基础问题。用的比较少,所以有些知识就忘记了,晚上重新温故一下。 1.如何获取一个对象的原型对象,或者重新设置一个对象的原型对象? 第一反应想到的是通过_proto_来获取,重新指向新的对象。然而,这个是现代浏览器提供的一个指针对象,而JS提供了这样的方法Object.getPrototypeOf(obj)和Object.setPro...
mongodb创建数据库问题
我刚装的mongodb,执行下列操作:rn> item="Key":"1","text":"wokao","number":3rn "Key" : "1", "text" : "wokao", "number" : 3 rn> db.table2.insert(item)rn> use MyTestrnswitched to db MyTestrn> show collectionrnMon Apr 01 16:55:59.390 JavaScript execution failed: don't know how to show [crnlection] at src/mongo/shell/utils.js:L847rn> dbrnMyTestrn> db.MyTest.count()rn0rn> item="Key":"1","text":"wokao","number":3rn "Key" : "1", "text" : "wokao", "number" : 3 rn> db.MyTest.table2.insert(item)rn> dbrnMyTestrn> show collectionrnMon Apr 01 17:06:54.765 JavaScript execution failed: don't know how to show [crnlection] at src/mongo/shell/utils.js:L847rn> db.table2.count()rn0rn> db.table2.find("key":"1")rn>rn> db.table2.find("key":"1")rn> You are trying to access MongoDB on the native driver port. For http diagnosrnc access, add 1000 to the port numberrnMon Apr 01 17:16:09.703 JavaScript execution failed: SyntaxError: Unexpected irnntifierrn>rn怎么不显示我创建的目录呢!问题在哪呢?
mongodb创建管理用户
Mongodb创建管理用户 首先通过命令连接mongo use admin 进入admin数据库 # mongoDB的权限设置是以库为单位的,必选要先选择库 Mongodb数据库角色: 数据库用户角色:read、readWrite; 数据库管理角色:dbAdmin、dbOwner、userAdmin; 集群管理角色:clusterAdmin、clusterManager、clusterMonit...