在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) {
    throw err;
  } else {
    console.log(‘成功建立数据库连接‘);
    db.collection(‘users‘, function(err, collection) {
      if (err) {
        throw err;
      } else {
        // 开始查询集合users
        collection.find({}).toArray(function(err, docs) {
          if (err) {
            throw err;
          } else {
            console.log(docs);
            db.close();
          }
        });
      }
    });
  }
});

如下图所示:

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

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) {
    throw err;
  } else {
    console.log(‘成功建立数据库连接‘);
    db.collection(‘users‘, function(err, collection) {
      if (err) {
        throw err;
      } else {
        // 开始查询集合users
        collection.find({userName: ‘龙恩‘}).toArray(function(err, docs) {
          if (err) {
            throw err;
          } else {
            console.log(docs);
            db.close();
          }
        });
      }
    });
  }
});

执行后如下所示:

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

{<字段名>:{$in:[<字段值1>,<字段值2>...]}}

下面我们将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) {
    throw err;
  } else {
    console.log(‘成功建立数据库连接‘);
    db.collection(‘users‘, function(err, collection) {
      if (err) {
        throw err;
      } else {
        // 开始查询集合users
        collection.find({userName:{$in:[‘空智‘]}}).toArray(function(err, docs) {
          if (err) {
            throw err;
          } else {
            console.log(docs);
            db.close();
          }
        });
      }
    });
  }
});

运行结果如下所示:

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) {
    throw err;
  } else {
    console.log(‘成功建立数据库连接‘);
    db.collection(‘users‘, function(err, collection) {
      collection.insert(docs, function(err, docs) {
        if (err) {
          throw err;
        } else {
          console.log(docs);
          db.close();
        }
      })
    });
  }
});

如下图所示:

现在我们来查询这些数据中 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) {
    throw err;
  } else {
    console.log(‘成功建立数据库连接‘);
    db.collection(‘users‘, function(err, collection) {
      if (err) {
        throw err;
      } else {
        // 开始查询集合users
        collection.find({type:‘food‘, price:{$lt:10}}).toArray(function(err, docs) {
          if (err) {
            throw err;
          } else {
            console.log(docs);
            db.close();
          }
        });
      }
    });
  }
});

执行效果如下图所示:

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) {
    throw err;
  } else {
    console.log(‘成功建立数据库连接‘);
    db.collection(‘users‘, function(err, collection) {
      if (err) {
        throw err;
      } else {
        // 开始查询集合users
        collection.find({
          type:‘food‘,
          $or: [
            {price: 11},
            {price: {$lt: 9}}
          ]
        }).toArray(function(err, docs) {
          if (err) {
            throw err;
          } else {
            console.log(docs);
            db.close();
          }
        });
      }
    });
  }
});

如下图所示:

原文地址:https://www.cnblogs.com/tugenhua0707/p/9218186.html

时间: 2024-10-28 14:17:52

在MongoDB数据库中查询数据(上)的相关文章

MongoDB数据库中查询数据(下)

在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一个对象,该对象中各属性名用来显示指定在查询结果中需要包含或排除的字段.该属性值可以为1或0,当属性值为1时,代表需要在查询结果中包含该字段,当属性值为0时,代表需要在查询结果中排除该字段.注意:在使用fields属性时,需要统一使用属性值1或属性值0来设置除_id字段之外的所有字段. 首先我们来看下数据库中有哪些数据,如下所示: 下面我

mongodb数据库中插入数据

一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: db.collection(collectionName, [options], [callback]); collectionName参数值是一个字符串,用于指定需要访问的集合名,该参数是必须填写的.options参数值为一个对象,用于指定访问该集合时使用的选项,使用的属性可以百度搜索下,选项比较多,用到的时候可以查下.call

使用JDBC从数据库中查询数据

* ResultSet 结果集:封装了使用JDBC 进行查询的结果 * 1. 调用Statement 对象的 executeQuery(sql) 方法可以得到结果集 * 2. ResultSet 返回的实际上就是一张数据表,有一个指针指向数据表的第一行的前面, * 可以调用next()方法检测下一行是否有效,若有效,返回true,且指针下移, * 相当于iterator 对象的 hasNext() 和 next()方法的结合体 * 3. 当指针定位到一行时,可以通过调用getXxx(index)

在数据库中查询数据——方法封装

<?php class DBDA { public $host="localhost"; //数据库地址 public $uid = "root"; //数据库用户名 public $pwd = ""; //密码 //执行sql语句,返回相应的结果 //参数:$sql代表执行的sql语句:$type是sql语句类型0代表查询,1代表其他:$db代表操作的数据库 public function Query($sql,$type=0,$db=&

MongoDB数据库中更新与删除数据

在MongoDB数据库中,可以使用Collection对象的update方法更新集合中的数据文档.使用方法如下所示: collection.update(selector, document, [options], [callback]); selector参数:该参数值为一个对象,用于查询需要更新的数据文档.该参数值指定的方法和我们前面使用的find方法中使用的selector参数值的指定方法完全相同. document参数:该参数值为一个对象,用于指定用来更新的数据文档. options参数

sql数据库中查询第几条到第几条的数据

通用方法: select top 500 * from (select top 1000 * from UserSearchDatas order by ID) a order by ID desc sql数据库中查询第几条到第几条的数据,布布扣,bubuko.com

Hibernate 查询结果与数据库中的数据不一致

hibernate的bug: https://hibernate.atlassian.net/browse/HHH-4956 解决办法: 添加别名select max(max_pre_nights) ,max(max_post_nights) from package_pre_post_hotel where package_id = :packageId添加别名后可以解决问题,如果SQL中的列名不是唯一的,最好都添加别名,比如 select a.id as a_id , b.id as b_i

python 读取SQLServer数据插入到MongoDB数据库中

# -*- coding: utf-8 -*-import pyodbcimport osimport csvimport pymongofrom pymongo import ASCENDING, DESCENDINGfrom pymongo import MongoClientimport binascii '''连接mongoDB数据库'''client = MongoClient('10.20.4.79', 27017)#client = MongoClient('10.20.66.10

从Oracle数据库中查询前几个月数据时需要注意的一些问题

在最近的一个项目中,有一个需求就是要查询数据库中前几个月的历史数据,但是由于自己考虑不全面造成了程序的bug,现在将这一块好好作一个总结,希望以后不再犯这种很低级的错误,首先贴出查询中用到的一个子函数,然后就此作出详细的分析: private string AddMonths(string originalTime, int months) { string returnString = string.Empty; string[] dataAndTime = originalTime.Spli