| 命令 | 含义 |
|---|---|
| show databases | 查看数据库 |
| db | 显示当前所在数据库 |
| use config | 切换数据库 |
| help | 显示帮助信息 |
| db.help() | 显示数据库帮助信息 |
| show users | 查看所有用户 |
| show tables | 查看所有表 |
| db.表名.drop() | 删除一个表 |
| db.表名.insert() | 插入一条数据 |
| db.表名.insertMany() | 插入多条数据 |
| db.表名.find() | 查询数据 |
| db.表名.updateOne() | 更新一条数据 |
| db.表名.updateMany() | 更新多条数据 |
| db.表名.update() | 更新一条数据 |
| db.表名.deleteOne() | 删除一条数据 |
| db.表名.deleteMany() | 删除多条数据 |
> show databases
admin 0.000GB
config 0.000GB
local 0.000GB
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> db
test
> use config
switched to db config
> db
config
1.显示当前库下可以执行的命令
> help
2.显示数据库操作命令
> db.help()
> show users
> show tables
> db.biao.drop()
true
mongo --port 28017 --eval "show dbs"
echo "show dbs"|mongo --port 28017
1.进入我们要创建数据的库
> use db_data
switched to db db_data
2.在user_info表中插入数据
> db.user_info.insert({"name":"jiangxl","ad":"北京市","job":"linux"})
WriteResult({ "nInserted" : 1 })
> db.user_info.insert({"name":"xiaoming","ad":"石家庄市","job":"net"})
WriteResult({ "nInserted" : 1 })
> db.user_info.insert({"name":"xiaolan","ad":"太原市","job":"java"})
WriteResult({ "nInserted" : 1 })
> db.user_info.insert({"name":"xiaozi","ad":"石家庄市","job":"guanggao"})
WriteResult({ "nInserted" : 1 })
3.查看表是否创建成功
> show tables
user_info
4.查看表中的数据
> db.user_info.find()
表中的数据在插入时会自动生成一个_id字段作为主键,数据格式也是json格式
在user_info表中插入不同字段的数据
> db.user_info.insert({"name":"xiaoqiang","ad":"北京市朝阳区","job":"linux","sex":"boy","xinzi":"10k"})
WriteResult({ "nInserted" : 1 })
> db.user_info.insert({"name":"xiaowu","ad":"北京市东城区","job":"linux","sex":"boy","xinzi":"6k"})
WriteResult({ "nInserted" : 1 })
可以看到,不同的字段只要表名相同都可以插在一个表中,而mysql只能更新表结构才能达到这种效果
应用如果更新涉及到了新增某个表的字段,mongod只需要在下次插入数据时,指定上新字段即可生效
> db.book_date.insertMany([
{ "name":"nginx", "price":25, "num":100, "status":"N" },
{ "name":"ansible", "price":50, "num":200 , "status":"A" },
{ "name":"tomcat", "price":100, "num":150, "status":"T" },
{ "name":"redis", "price":75, "num":320 , "status":"R" },
{ "name":"docker", "price":45, "num":270, "status":"D" }
]);
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("602791d60ae90b3ed52d0247"),
ObjectId("602791d60ae90b3ed52d0248"),
ObjectId("602791d60ae90b3ed52d0249"),
ObjectId("602791d60ae90b3ed52d024a"),
ObjectId("602791d60ae90b3ed52d024b")
]
}
>
> show tables;
book_date
user_info
>
> db.book_date.find()
> db.nest_date.insertMany( [
... { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
... { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" },
... { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
... { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
... { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
... ]);
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("60279b0d0ae90b3ed52d0251"),
ObjectId("60279b0d0ae90b3ed52d0252"),
ObjectId("60279b0d0ae90b3ed52d0253"),
ObjectId("60279b0d0ae90b3ed52d0254"),
ObjectId("60279b0d0ae90b3ed52d0255")
]
}
> show tables;
book_date
nest_date
user_info
> db.nest_date.find()
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0251"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0252"), "item" : "notebook", "qty" : 50, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "A" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0253"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0255"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
> db.book_date.find({"status":"N"})
{ "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
navicat查询
> db.nest_date.find({"size.uom":"cm","qty":{$lt:50}})
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0251"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0255"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
也可以使用Navicat拆一下显得好看
db.nest_date.find({
"size.uom": "cm", //size等于cm
"qty": {
$lt: 50 //qty小于50
}
})
navicat查询
> db.nest_date.find({
... "size.uom": "cm",
... "qty": {
... $eq: 75
... }
... })
{ "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
解释:
db.nest_date.find({
"size.uom": "cm", //uom为cm的
"qty": {
$eq: 75 //qty等于75的
}
})
navicat查询
> db.book_date.find({$or: [{"status": "T"},{"price": {$lt: 50}}]})
{ "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
{ "_id" : ObjectId("602792a80ae90b3ed52d024e"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" }
{ "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
解释:
db.book_date.find({
$or: [ //或者
{
"status": "T" //staus等于T的
},
{
"price": {
$lt: 50 //price小于50的
}
}
]
})
navicat查询
> db.book_date.find({"status":"D",$or: [{"price":{$lt:30}},{"name": /^do/}]})
{ "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
解释:
db.book_date.find({
"status": "D", //status为D的
$or: [{
"price": { //price小于30的
$lt: 30
}
}, {
"name": /^do/ //name以do开头的
}]
})
navicat查询
> db.book_date.findOne()
{
"_id" : ObjectId("602792a80ae90b3ed52d024c"),
"name" : "nginx",
"price" : 25,
"num" : 100,
"status" : "N"
}
1.查询要更新的数据
> db.book_date.find({"name":"nginx"})
{ "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
2.更新语句
> db.book_date.updateOne({"name":"nginx"},{$set:{"price":70,"num":230},$currentDate:{"lastModified":true}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
3.查看数据是否更新
> db.book_date.find()
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0256"), "name" : "nginx", "price" : 70, "num" : 230, "status" : "N", "lastModified" : ISODate("2021-02-13T14:14:01.526Z") }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0257"), "name" : "ansible", "price" : 50, "num" : 200, "status" : "A" }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0258"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d0259"), "name" : "redis", "price" : 75, "num" : 320, "status" : "R" }
{ "_id" : ObjectId("6027de7f0ae90b3ed52d025a"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
更新语句解释
db.book_date.updateOne({
"name": "nginx" //要匹配的数据,当数据中name是nginx的数据
}, {
$set: { //要修改的内容
"price": 70, //price修改为70
"num": 230 //num修改为230
},
$currentDate: {
"lastModified": true //增加一个字段,每次更新都记录时间
}
})
db.book_date.updateOne({
"name": "nginx", //条件1
"status":"N" //条件2
}, {
$set: { //更新的内容
"price": 70,
"num": 230,
"status":"Nginx"
},
$currentDate: {
"lastModified": true
}
})
更新成功
> db.book_date.updateMany({"num":{$lt:250}},{$set:{"price":"99","num":"530"},$currentDate:{"lastModified":true}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.book_date.find()
{ "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : "70", "num" : "230", "status" : "Nginx", "lastModified" : ISODate("2021-02-13T11:19:38.473Z") }
{ "_id" : ObjectId("602792a80ae90b3ed52d024d"), "name" : "ansible", "price" : "99", "num" : "530", "status" : "A", "lastModified" : ISODate("2021-02-13T11:24:46.045Z") }
{ "_id" : ObjectId("602792a80ae90b3ed52d024e"), "name" : "tomcat", "price" : "99", "num" : "530", "status" : "T", "lastModified" : ISODate("2021-02-13T11:23:59.063Z") }
{ "_id" : ObjectId("602792a80ae90b3ed52d024f"), "name" : "redis", "price" : 75, "num" : 320, "status" : "R" }
{ "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
解释:
db.book_date.updateMany({
"num": {
$lt: 300 //num小于300的全部数据
}
}, {
$set: {
"price": "99", //price更新为99
"num": "530" //num更新为530
},
$currentDate: {
"lastModified": true
}
})
更新成功
db.book_date.update({
"name": "nginx"
}, {
$set: {
"price": "70",
"num": "230",
"status":"nginx"
},
$currentDate: {
"lastModified": true
}
})
> db.book_date.deleteOne({"name":"nginx"})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.book_date.deleteMany({"num":{$lt:500}})
{ "acknowledged" : true, "deletedCount" : 2 }
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po