Nodejs MongoDB(2):基本查询使用

Nodejs MongoDB(2):基本查询使用

刚才前面发了<a href=“http://cnodejs.org/topic/50beebf7637ffa41559796e3”>MongoDB(1):Windows下安装使用MongoDB数据库</a>,觉得就这样多吊人胃口啊,所以就顺便把一些基本的查询方法写出来,供大家参考学习,如果写的有不对的地方还请多多批评。

我想看过前面写的"Windows下MongoDB的安装使用"的文章的应该知道怎么打开数据库了!现在我们就从这里接着讲!还有一点就是我的版本目前是2.0.4的哦!但是我看过很多方法在各个版本上还是通用的!

补充下哈:在开始之前我要强调一个重点!文档就是一条数据意思,集合就是表的意思,默认监听端口是27017,mongodb是使用javascript交互的,不错你没有看错,就是javascript(前面有提到哦),这些在后面慢慢的深入中会发现如果会了javascript学习mongodb是多么上手的一件事!下面开始:

<b>使用之前别忘记先启动服务</b>

<p>1.<b>show dbs</b><br /> 这个可以显示当前的实例下所有数据库的列表!不同的版本有不同的案例数据库!2.0.4的是local,并且是一个空的数据库!</p>

<p>2.<b>use myFirst</b><br /> myFirst是我创建的!如果你不创建的话,那么这句就可以隐式的帮你创建myFirst数据库,use myFirst也就是使用这个数据库的意思!现在应该没有数据库,那么我们就插入数据进行学习测试。</p>

<p>3.<b>db.test1.save({"name":"qlier", age:21, "sex":"male"});</b><br /> test1这个表也会隐式的被创建,并且插入一条文档 ,文档有name,age,sex。下面我们在用另外一种方法插入一条数据。</p>

<p>4.<b>db.test1.insert({“name”:“tom”, age:19, “sex”:“male”});</b><br /> 在test1中插入数据,可能你会问insert和save有什么不同,他们还真的有点不同!</p> <p><strong style="line-height: normal; ">insert</strong>仅仅是插入文档到集合中,如果记录不存在则插入,如果记录存在则忽略</p> <p><strong style="line-height: normal; ">save</strong>是在文档不存在时插入,存在时则是更新<br />  </p>

<p>5.<b>db.test1.find();</b><br /> 这个可以查询test1集合中所有的数据。所有的文档都有_Id这一列,这个是主键,是系统生成唯一的主键,不过我们也可以自己来操作,怎么操作就自己动动脑子了,不过自己操作的时候可千万不能有重复的值,要不会有异常。</p>

<p>6.<b>db.test1.findOne();</b><br /> 这个查询test1集合中最上面一条数据并显示。</p>

<p>7.<b>db.test1.find({name:"qlier"});</b><br /> 查询name是qlier的文档。</p>

<p>8.<b>db.test1.update({name:"tom"}, {$set:{name:"Jim"}});</b><br /> 修改名称tom为Jim,这个是修改的方法。</p>

<p>9.<b>db.test1.remove({name:"Jim"});</b><br /> 这个是删除name为Jim!<br />这些都是最最基本的增删改查了,下面将重点讲解查询!表test2是在我电脑上创建过的,就name, age, sex,和test1一样。</p>

<p>10.条件操作符<、<=、>、>=<br /> <b>db.test2.find({age:{$gt:20}});</b><br /> 查询年龄大于12岁的用户,如此的还有$lt小于、$gte大于等于、$lte小于等于。</p>

<p>11.$all匹配所有<br /> <b>db.test2.find({age:{$all:[8]}});</b><br /> 他会匹配所有age等于8的文档。</p>

<p>12.$exists判断字段是否存在<br /> <b>db.test2.find({age:{$exists:true}});</b><br /> 查询所有存在age字段的文档。false表示不存在。</p>

<p>13.$mod取模运算<br /> <b>db.test2.find({age:{$mod:[10, 1]}});</b><br /> 查询所有age模10等于1的文档。</p>

<p>14$ne不等于<br /> <b>db.test2.find({age: {$ne : 20}});</b><br /> 查询所有年龄不等于20的用户文档。</p>

<p>15.$in包含<br /> <b>db.test2.find({age : { $in : [20, 21, 22]}});</b><br /> 查询所有年龄等于20、21、22的用户文档。</p>

<p>16$nin不包含<br /> <b>db.test2.find({age : {$nin : [20, 21, 22]}});</b><br /> 查询所有年龄不等于20、21、22的用户文档。</p>

<p>17.count查询记录条数<br /> <b>db.test2.find().count();</b><br /> 返回test2集合中文档记录的数目。</p>

<p>18.limit限制显示的条数<br /> <b>db.test2.find().limit(5);</b><br /> 返回test2中上面的5条记录。</p>

<p>19.skip限制返回记录的起点<br /> <b>db.test2.find().skip(3);</b><br /> 返回test2中上面数第三条数据一下的所有数据</p>

<p>20.分页的实现<br /> <b>db.test2.find().skip(1).limit(5);</b><br /> 返回从第二条数据开始,显示5条数据,这个可以用作分页,很简单就实现了!</p>

<p>21.sort排序<br /> <b>db.test2.find().sort({age:1});</b><br /> 所有的数据按年龄大小升序(asc)排列,既然1表示asc排列,那么-1就表示desc排列,这是真的。</p>

<p>22.distinct去掉重复值<br /> <b>db.test2.find().distinct("name");</b><br /> 按name的重复值筛选数据。</p>

今天就写到这里,这些都是很常用的基本的查询操作,至于是否有更复杂的查询呢,肯定是有了,包括group查询、联合查询、正则表达式查询、null值的处理等!只不过这些在后面都会有提到的。

同学们看到这里应该可以在我们非常喜欢的Node.js中试一试了,体验Mongodb带给我们的更多惊喜。

后面还会继续讲怎么自动启动服务、日志记录、存储过程等等。供大家一起参考学习,如果写的不对的地方还请多多指出批评哦。


10 回复

Nodejs MongoDB(2): 基本查询使用

在前一篇文章《Nodejs MongoDB(1): Windows下安装使用MongoDB数据库》中,我们介绍了如何在Windows环境下安装和使用MongoDB。本文将继续深入探讨一些基本的查询方法,帮助大家更好地理解和使用MongoDB。

启动MongoDB服务

在使用MongoDB之前,请确保已经启动了MongoDB服务。可以通过命令行输入以下命令启动MongoDB服务:

mongod --dbpath "C:\path\to\your\db"

基本查询方法

假设我们已经在MongoDB中创建了一个名为myFirst的数据库,并在其中创建了一个名为test1的集合。现在我们将介绍一些基本的查询方法。

1. 显示所有数据库
show dbs

在MongoDB 2.0.4版本中,local数据库会被默认创建。

2. 使用指定数据库
use myFirst

如果没有该数据库,MongoDB会自动创建。

3. 插入文档
db.test1.save({"name":"qlier", age:21, "sex":"male"});

或者使用insert方法:

db.test1.insert({"name":"tom", age:19, "sex":"male"});
4. 查询所有文档
db.test1.find();
5. 查询特定文档
db.test1.find({name:"qlier"});
6. 更新文档
db.test1.update({name:"tom"}, {$set:{name:"Jim"}});
7. 删除文档
db.test1.remove({name:"Jim"});
8. 条件操作符查询
db.test2.find({age:{$gt:20}});  // 年龄大于20
db.test2.find({age:{$lt:20}});  // 年龄小于20
db.test2.find({age:{$gte:20}}); // 年龄大于等于20
db.test2.find({age:{$lte:20}}); // 年龄小于等于20
db.test2.find({age:{$all:[8]}}); // 年龄等于8
db.test2.find({age:{$exists:true}}); // 存在age字段
db.test2.find({age:{$mod:[10, 1]}}); // age模10等于1
db.test2.find({age: {$ne : 20}}); // 年龄不等于20
db.test2.find({age : { $in : [20, 21, 22]}}); // 年龄等于20、21、22
db.test2.find({age : {$nin : [20, 21, 22]}}); // 年龄不等于20、21、22
9. 记录条数
db.test2.find().count();
10. 限制显示条数
db.test2.find().limit(5);
11. 起始点限制
db.test2.find().skip(3);
12. 分页实现
db.test2.find().skip(1).limit(5);
13. 排序
db.test2.find().sort({age:1}); // 升序
db.test2.find().sort({age:-1}); // 降序
14. 去重
db.test2.find().distinct("name");

以上就是一些基本的查询操作。通过这些操作,我们可以灵活地管理和查询MongoDB中的数据。希望这些示例能帮助大家更好地理解和使用MongoDB。


借你的帖子问下,我按照你的方法写了如下代码

function select() { var t_data; db_connector.collection(“game23”, function(err, collection) { collection.find({‘table_name’:‘000023’}, function(err, value){ console.log(value); }); }); console.log(“where”); return true; }

打印后,value里面没有我需要的数据啊。为什么呢

已经找到问题了-.-

不错,不过查询方面的应该还可以多介绍一下哦!

后面还会陆续介绍的

问题在哪?

api翻译的好

感觉这样写比较蛋疼,应该弄个helper, 传入相应的参数,直接返回数据

Node.js MongoDB(2): 基本查询使用

在前面的文章中,我们介绍了如何在Windows下安装和使用MongoDB。接下来,我们将重点放在基本的查询操作上。假设你已经安装并运行了MongoDB,我们可以开始学习如何使用Node.js进行基本的查询操作。

1. 连接到MongoDB

首先,我们需要通过Node.js连接到MongoDB服务器。使用mongodb库可以轻松实现这一点:

const MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/myFirst', (err, db) => {
    if (err) throw err;
    console.log('Connected to Database');
});

2. 插入数据

为了演示查询操作,我们先插入一些数据:

const dbo = db.db('myFirst');
dbo.collection('test1').insertOne({ name: 'qlier', age: 21, sex: 'male' }, (err, res) => {
    if (err) throw err;
    console.log("Document inserted");
});
dbo.collection('test1').insertOne({ name: 'tom', age: 19, sex: 'male' }, (err, res) => {
    if (err) throw err;
    console.log("Document inserted");
});

3. 查询数据

现在我们可以通过不同的查询条件来获取数据:

// 查找所有数据
dbo.collection('test1').find({}).toArray((err, docs) => {
    if (err) throw err;
    console.log(docs);
});

// 查找特定条件的数据
dbo.collection('test1').find({ name: 'qlier' }).toArray((err, docs) => {
    if (err) throw err;
    console.log(docs);
});

// 使用条件操作符
dbo.collection('test1').find({ age: { $gt: 20 } }).toArray((err, docs) => {
    if (err) throw err;
    console.log(docs);
});

4. 其他查询操作

  • 分页:

    dbo.collection('test1').find({}).skip(1).limit(1).toArray((err, docs) => {
        if (err) throw err;
        console.log(docs);
    });
    
  • 排序:

    dbo.collection('test1').find({}).sort({ age: 1 }).toArray((err, docs) => {
        if (err) throw err;
        console.log(docs);
    });
    
  • 去重:

    dbo.collection('test1').distinct('name', (err, items) => {
        if (err) throw err;
        console.log(items);
    });
    

总结

以上代码展示了如何使用Node.js和MongoDB进行基本的查询操作。这些操作涵盖了常见的查询需求,如查找所有数据、条件查询、分页、排序和去重等。希望这些示例能帮助你在实际项目中更好地利用MongoDB。

如果你有任何问题或需要进一步的帮助,请随时提问!

回到顶部