mysql 查询mongdb数据_在MongoDB数据库中查询数据(上)

在MongoDB数据库中查询数据(上)

在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示:

collection.find(selector, [options]);

selector值为一个对象,用于指定查询时使用的查询条件,options是可选的参数,该参数值是一个对象,用于指定查询数据时所选用的选项。

find方法返回一个代表游标的Cursor对象,在该游标中包含了所有查询到的数据文档信息。可以使用Cursor对象的toArray方法获取所有查询到的数据文档,方法如下:

collection.find(selector, [options]).toArray(callback);

callback 用于指定数据文档操作结束时执行的回调函数,该回调函数使用如下所示:

function(err, docs) {};

在该回调函数中,err参数为获取数据文档操作失败时触发的错误对象,docs参数为一个数组,包含了所有查询到的数据文档。

如下是一个查询 user结合中的所有数据,如果查询失败,则抛出查询数据失败时触发的错误对象,如果查询成功,则在控制台中输出所有查询到的数据,然后关闭数据库,如下所示:

const mongo = require('mongodb');

const Server=mongo.Server;

const Db=mongo.Db;

const server= new Server('localhost', '27017', { auto_reconnect: true});

const db= new Db('dataDb', server, { safe: true});

db.open(function(err, db) {if(err) {throwerr;

}else{

console.log('成功建立数据库连接');

db.collection('users', function(err, collection) {if(err) {throwerr;

}else{//开始查询集合users

collection.find({}).toArray(function(err, docs) {if(err) {throwerr;

}else{

console.log(docs);

db.close();

}

});

}

});

}

});

如下图所示:

4f9df8fd98ac75f35c5827c0b8f0f471.png

二:根据查询条件来查询数据

2.1 可以在查询条件中指定需要查询的字段及字段值,如下方法所示:

{:}

下面我们把上面的查询条件改为如下:

collection.find({userName: '龙恩'});

所有代码如下:

const mongo = require('mongodb');

const Server=mongo.Server;

const Db=mongo.Db;

const server= new Server('localhost', '27017', { auto_reconnect: true});

const db= new Db('dataDb', server, { safe: true});

db.open(function(err, db) {if(err) {throwerr;

}else{

console.log('成功建立数据库连接');

db.collection('users', function(err, collection) {if(err) {throwerr;

}else{//开始查询集合users

collection.find({userName: '龙恩'}).toArray(function(err, docs) {if(err) {throwerr;

}else{

console.log(docs);

db.close();

}

});

}

});

}

});

执行后如下所示:

4be31a9af2f071d025007538ff1aa9a2.png

2.2 可以在查询选择器中指定需要查询的字段并限定字段值的范围,如下方法所示:

{:{$in:[,...]}}

下面我们将find方法的查询条件改为如下所示:

collection.find({userName:{$in:['空智']}});

下面是更改后的所有代码,如下所示:

const mongo = require('mongodb');

const Server=mongo.Server;

const Db=mongo.Db;

const server= new Server('localhost', '27017', { auto_reconnect: true});

const db= new Db('dataDb', server, { safe: true});

db.open(function(err, db) {if(err) {throwerr;

}else{

console.log('成功建立数据库连接');

db.collection('users', function(err, collection) {if(err) {throwerr;

}else{//开始查询集合users

collection.find({userName:{$in:['空智']}}).toArray(function(err, docs) {if(err) {throwerr;

}else{

console.log(docs);

db.close();

}

});

}

});

}

});

运行结果如下所示:

41ca365a64c8d9c2910eec412583e0a8.png

2.3  指定多个字段进行查询

在一个复杂的查询条件中,可能需要同时指定多个字段值的条件查询。下面我们往我们的数据中插入如下一些数据;代码如下:

const mongo = require('mongodb');

const Server=mongo.Server;

const Db=mongo.Db;

const server= new Server('localhost', '27017', { auto_reconnect: true});

const db= new Db('dataDb', server, { safe: true});var docs =[

{type:'food', price: 11},

{type:'food', price: 10},

{type:'food', price: 9},

{type:'food', price: 8},

{type:'food', price: 9}

];

db.open(function(err, db) {if(err) {throwerr;

}else{

console.log('成功建立数据库连接');

db.collection('users', function(err, collection) {

collection.insert(docs,function(err, docs) {if(err) {throwerr;

}else{

console.log(docs);

db.close();

}

})

});

}

});

如下图所示:

de744ab468e5ce808272b3e10cfda3f2.png

现在我们来查询这些数据中 type 字段值等于 'food', 且 price字段值小于10的数据,如下代码所示:

collection.find({type:'food', price:{$lt:10}})

所有代码如下:

const mongo = require('mongodb');

const Server=mongo.Server;

const Db=mongo.Db;

const server= new Server('localhost', '27017', { auto_reconnect: true});

const db= new Db('dataDb', server, { safe: true});

db.open(function(err, db) {if(err) {throwerr;

}else{

console.log('成功建立数据库连接');

db.collection('users', function(err, collection) {if(err) {throwerr;

}else{//开始查询集合users

collection.find({type:'food', price:{$lt:10}}).toArray(function(err, docs) {if(err) {throwerr;

}else{

console.log(docs);

db.close();

}

});

}

});

}

});

执行效果如下图所示:

054dd8cba45eda30054dc12c0e2a5d50.png

2.4 使用 '或' 关系来指定多个字段值的查询条件。

在一个复杂的查询条件中,可能需要使用 ‘或’ 关系来指定多个字段的查询条件,比如 现在我们查询,price为11, 或者price字段值小于9的数据,使用如下方法:

collection.find({

type:'food',

$or: [

{price:11},

{price: {$lt:9}}

]

});

所有代码如下所示:

const mongo = require('mongodb');

const Server=mongo.Server;

const Db=mongo.Db;

const server= new Server('localhost', '27017', { auto_reconnect: true});

const db= new Db('dataDb', server, { safe: true});

db.open(function(err, db) {if(err) {throwerr;

}else{

console.log('成功建立数据库连接');

db.collection('users', function(err, collection) {if(err) {throwerr;

}else{//开始查询集合users

collection.find({

type:'food',

$or: [

{price:11},

{price: {$lt:9}}

]

}).toArray(function(err, docs) {if(err) {throwerr;

}else{

console.log(docs);

db.close();

}

});

}

});

}

});

如下图所示:

ff8ff12f9860e12bc04aecacb686c848.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值