各位用户为了找寻关于mongodb的写操作的资料费劲了很多周折。这里教程网为您整理了关于mongodb的写操作的相关资料,仅供查阅,以下为您介绍关于mongodb的写操作的详细内容
使用插入数据命令:
>insert
需要注意的是,如果插入一文件(现在理解,nosql 类型的db数据不能说是记录了,它是已文件作为单位,而传统型的关系型数据库,我们说是插入一条记录),如果没有带人_id,那么会自动生成一个唯一的id,这个id好比关系型数据库里的主键一样。
如果是自己指定id,那么必须id是唯一的,这点关系型和nosql型都必须要求的;
数据字段的名字不能包含$ 和.
在敲了一阵发现,擦,我要是再shell里面去编写复杂的插入语句,就shell的这种一行一句,不搞死我去啊。我想它肯定是支持向bat这种批处理或者其他,看它语法和js一模一样,于是大胆猜测它使用的就是javascript,于是我就用notepad++来编辑这些插入命令,试着插入复杂的对象;
哦,另外说一句,如果这个bios数据不存在,那么要先使用
>use bios
生成一个数据库,如果你不往这里插入一笔数据,mongoDB会自动删除掉这个数据库;
所以还要插入一笔让mongodb维持这数据库的任意数据
>db.bios.insert({a:'a'})
编写了一个insert.js脚步,放在安装目录的js文件夹下。于是这样输入:
>mongolocalhost:27017/bios f:mongodbjsinsert.js
效果如图
可以看到,这个js脚步成功执行;
要查询这个文档,输入命令:
>db.bios.find({ name: { first: 'John', last: 'chen' } } );
有了js写更多的语句,就方便多了。
Isert语句支持多个批量插入就像下面这样:
Insert.js 语句:
? 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 109db.bios.
insert
(
[
{
_id: 3,
name
: {
first
:
'Grace'
,
last
:
'Hopper'
},
title:
'Rear Admiral'
,
birth: new
Date
(
'Dec 09, 1906'
),
death: new
Date
(
'Jan 01, 1992'
),
contribs: [
'UNIVAC'
,
'compiler'
,
'FLOW-MATIC'
,
'COBOL'
],
awards: [
{
award:
'Computer Sciences Man of the Year'
,
year
: 1969,
by
:
'Data Processing Management Association'
},
{
award:
'Distinguished Fellow'
,
year
: 1973,
by
:
' British Computer Society'
},
{
award:
'W. W. McDowell Award'
,
year
: 1976,
by
:
'IEEE Computer Society'
},
{
award:
'National Medal of Technology'
,
year
: 1991,
by
:
'United States'
}
]
},
{
_id: 4,
name
: {
first
:
'Kristen'
,
last
:
'Nygaard'
},
birth: new
Date
(
'Aug 27, 1926'
),
death: new
Date
(
'Aug 10, 2002'
),
contribs: [
'OOP'
,
'Simula'
],
awards: [
{
award:
'Rosing Prize'
,
year
: 1999,
by
:
'Norwegian Data Association'
},
{
award:
'Turing Award'
,
year
: 2001,
by
:
'ACM'
},
{
award:
'IEEE John von Neumann Medal'
,
year
: 2001,
by
:
'IEEE'
}
]
},
{
_id: 5,
name
: {
first
:
'Ole-Johan'
,
last
:
'Dahl'
},
birth: new
Date
(
'Oct 12, 1931'
),
death: new
Date
(
'Jun 29, 2002'
),
contribs: [
'OOP'
,
'Simula'
],
awards: [
{
award:
'Rosing Prize'
,
year
: 1999,
by
:
'Norwegian Data Association'
},
{
award:
'Turing Award'
,
year
: 2001,
by
:
'ACM'
},
{
award:
'IEEE John von Neumann Medal'
,
year
: 2001,
by
:
'IEEE'
}
]
}
]
);
db.bios.
insert
(
{
name
: {
first
:
'John'
,
last
:
'McCarthy'
},
birth: new
Date
(
'Sep 04, 1927'
),
death: new
Date
(
'Dec 24, 2011'
),
contribs: [
'Lisp'
,
'Artificial Intelligence'
,
'ALGOL'
],
awards: [
{
award:
'Turing Award'
,
year
: 1971,
by
:
'ACM'
},
{
award:
'Kyoto Prize'
,
year
: 1988,
by
:
'Inamori Foundation'
},
{
award:
'National Medal of Science'
,
year
: 1990,
by
:
'National Science Foundation'
}
]
}
)
c = db.bios.find( {
name
: {
first
:
'John'
,
last
:
'McCarthy'
} } );
while((c.hasNext())) printjson(c.
next
())
=================================================
Mongo还有个save方法,这个方法同样也是插入数据。咋一样是一样的,仔细想想如果是一样的,那干嘛不统一,于是想到了ORM模式中,数据的save方法中,如果要保存的数据已存在,那么它知道是修改这个数据,如果不存在则是新增。同样,这里save也是如此。
如果save方法带了_id那么,如果数据库中存在了此_id的文档,那么,会修改原有数据,如果没有,则新增,所以,不带_id的save方法和insert是一样的,但是Insert方法如果插入的是相同的Id,那么是不会插入的;
更新操作,传统的数据库更新操作,必须是更新的数据已经存在,要不然你想,你数据记录都不在便要更新,这不扯淡吗,但是,mongodb却可以这样,如果要更新的数据不存在,那么便插入这文档数据;
更新语法:
db.collection.update(<query>,<update>, { upsert: true } )
如果是更新具体某个,那么带_id的save方法同样可以完成更新任务;
查询可发现改变的数据:
? 1 2>c =db.bios.find( {
name
: {
first
:
'update'
,
last
:
'update'
} } );
>while((c.hasNext()))printjson(c.
next
())
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/chenqiangdage/article/details/49953987