`

MongoDB: Queries and aggregation 1

 
阅读更多

db.products.findOne({'slug': 'wheel-barrow-9092'})
db.categories.findOne({'_id': product['main_cat_id']})

<=>

db.products.find({'slug': 'wheel-barrow-9092'}).limit(1)


db.reviews.find({'product_id': product['_id']})

db.reviews.find({'product_id': product['_id']}).skip(0).limit(12)

db.reviews.find({'product_id': product['id']}).sort({helpful_votes: -1}).limit(12)

 

 

product = db.products.findOne({'slug': 'wheel-barrow-9092'})
category = db.categories.findOne({'_id': product['main_cat_id']})
reviews_count = db.reviews.count({'product_id': product['_id']})
reviews = db.reviews.find({'product_id': product['_id']}).skip((page_number - 1) * 12).limit(12).
sort({'helpful_votes': -1})

 

db.users.findOne({username: 'kbanker',hashed_password: 'bd1cfa194c3a603e7186780824b04419'})

db.users.findOne({username: 'kbanker',hashed_password: 'bd1cfa194c3a603e7186780824b04419'},{_id: 1})

 

db.users.find({last_name: 'Banker'})

db.users.find({last_name: /^Ba/})

 

db.users.find({'addresses.zip': {$gte: 10019, $lt: 10040}})

db.orders.find({'line_items.sku': "9092",'purchase_date': {$gte: new Date(2009, 0, 1)}})

 

user_ids = db.orders.find({'line_items.sku': "9092",purchase_date: {'$gt': new Date(2009, 0, 1)}},
                                                {user_id: 1, _id: 0}).toArray().map(function(doc) { return doc['_id'] })

users = db.users.find({_id: {$in: user_ids}})

 

--------------------------------------------

db.users.find({first_name: "Smith", age: 40})

 

db.users.find({age: {$gte: 0, $lte: 30})

 

db.products.find({main_cat_id: { $in:
           [ObjectId("6a5b1476238d3b4dd5000048"),
            ObjectId("6a5b1476238d3b4dd5000051"),
            ObjectId("6a5b1476238d3b4dd5000057") ] } } )

db.products.find('details.color': { $nin: ["black", "blue"] }

db.products.find(tags: { $all: ["gift", "garden"] }

 

BOOLEAN OPERATORS($ne, $not, $or, $and, and $exists.)

db.products.find('details.manufacturer': 'ACME', tags: {$ne: "gardening"} }

db.products.find({ $or: [{'details.color': 'blue'}, {'details.manufacturer':'ACME'}] })

db.products.find({$and: [
                             {tags: {$in: ['gift', 'holiday']}},
                             {tags: {$in: ['gardening', 'landscaping']}}
                          ]})

 

db.products.find({'details.color': {$exists: true}})

<=>

db.products.find({'details.color': {$ne: null}})

 

db.products.find({'details.manufacturer_id': 432});

 

{ _id: {sym: 'GOOG', date: 20101005}
open: 40.23,
high: 45.50,
low:
38.81,
close: 41.22
}

db.ticks.find({_id: {sym: 'GOOG', date: 20101005} });     //vv

db.ticks.find({_id: {date: 20101005, sym: 'GOOG'} });     //xx

 

 

{ _id: ObjectId("4c4b1476238d3b4dd5003981"),
slug: "wheel-barrow-9092",
sku: "9092",
tags: ["tools", "equipment", "soil"]

}

db.products.find({tags: "soil"})

db.products.find({'tags.0': "soil"})

 

 

{ _id:
ObjectId("4c4b1476238d3b4dd5000001")
username: "kbanker",
addresses: [
        {name:"home",
         street: "588 5th Street",
         city:"Brooklyn",
         state:"NY",
         zip:11215},
      {name:"work",

        street:"1 E. 23rd Street",
        city:"New York",
        state:"NY",
        zip:10010}
     ]
}

db.users.find({'addresses.0.state': "NY"})

db.users.find({addresses: {$elemMatch: {name: 'home', state: 'NY'}}})

db.users.find({addresses: {$size: 3}})

 

JAVASCRIPT

If you can’t express your query with the tools described thus far, then you may need to write some JavaScript. You can use the special $where operator to pass a JavaScript expression to any query.

 

db.reviews.find({$where: "function() { return this.helpful_votes > 3; }"}})

db.reviews.find({$where: "this.helpful_votes > 3"}})

 

REGULAR EXPRESSIONS

db.reviews.find({user_id: ObjectId("4c4b1476238d3b4dd5000001"),text: /best|worst/i })

 

MISCELLANEOUS QUERY OPERATORS

db.orders.find({subtotal: {$mod: [3, 0]}})

db.users.find({_id: {$type: 2}})

 

PROJECTIONS

db.users.find({}, {username: 1})

db.users.find({}, {addresses: 0, payment_methods: 0})

 

db.products.find({}, {reviews: {$slice: 12}})
db.products.find({}, {reviews: {$slice: -5}})

db.products.find({}, {reviews: {$slice: [24, 12]}})

db.products.find({}, {reviews: {$slice: [24, 12]}, 'reviews.rating': 1})

 

SORTING

db.reviews.find({}).sort({rating: -1})

db.reviews.find({}).sort({helpful_votes:-1, rating: -1})

 

SKIP AND LIMIT

db.docs.find({}).skip(500000).limit(10).sort({date: -1})    //inefficient

db.docs.find({date: {$gt: previous_page_date}}).limit(10).sort({date: -1})  //efficient

 

 

 

 

分享到:
评论

相关推荐

    MongoDB: The Definitive Guide

    to scale out with features such as secondary indexes, range queries, sorting, aggregations, and geospatial indexes. This chapter covers the major design decisions that made MongoDB what it is

    解决Linux上MongoDB启动脚本错误---env: /etc/init.d/mongodb : no such file or directory

    1. **问题原因** - MongoDB的启动脚本可能未正确安装或缺失。 - 系统路径配置不正确,导致找不到`/etc/init.d/mongodb`脚本。 - 使用的是旧版的启动方式,而系统已升级到Systemd,需要使用新的启动命令。 2. **...

    深入学习MongoDB:Scaling MongoDB && 50 Tips and Tricks for MongoDB Developers

    深入学习MongoDB:Scaling MongoDB && 50 Tips and Tricks for MongoDB Developers深入学习MongoDB中文版Scaling MongoDB英文版50 Tips and Tricks for MongoDB Developers英文版高清完整目录3本打包合集

    Windows上安装MongoDB:完整步骤详解.pdf

    1. 连接MongoDB:输入`mongo.exe`命令,连接到本地MongoDB服务。 2. 创建数据库:使用`use &lt;database_name&gt;`命令,如`use testdb`,创建一个名为"testdb"的数据库。 3. 插入数据:在选定的数据库中,使用`db....

    Spring Data MongoDB : Update document

    如果需要频繁更新多个字段且更新操作复杂,可能需要使用`Aggregation`来构建复杂的更新逻辑。同时,要注意处理并发更新可能导致的冲突问题,比如使用乐观锁或者版本号字段。 在分析源码时,我们可以看到Spring Data...

    fdb-document-layer:在FoundationDB上的文档数据模型,实现了MongoDB:registered:有线协议

    文档层使用MongoDB:registered:有线协议,允许通过现有的MongoDB:registered:客户端绑定使用MongoDB:registered:API。 所有持久数据都存储在FoundationDB键值存储中。 文档层实现了MongoDB:registered:API(v ...

    MongoDB 聚合管道(Aggregation Pipeline)

    其中,聚合管道(Aggregation Pipeline)是MongoDB中一个非常重要的特性,用于对数据进行复杂处理和分析。接下来,我们将详细地探讨MongoDB聚合管道的相关知识点。 首先,从概念上理解,MongoDB的聚合管道可以类比...

    掌握MongoDB:NoSQL数据库基础与高级特性教程.rar

    什么是 MongoDB MongoDB 简介 MongoDB 特点 安装与配置 安装 MongoDB 启动与配置 MongoDB 基本操作 数据库和集合 文档操作 查询操作 基本查询 高级查询 索引与性能优化 创建索引 索引类型 索引优化 聚合操作 聚合...

    pm2-mongodb:用于监视mongodb数据库的PM2模块

    PM2模块可自动监视mongodb的生命体征: 查询,输入,更新,删除 连接数 已用存储空间 网络速度(输入和输出) 代表名称和状态 pm2-mongodb 安装 $ npm install pm2 -g $ pm2 install pm2-mongodb 组态 NODE :用户...

    Spring集成MongoDB官方指定jar包:spring-data-mongodb-1.4.1.RELEASE.jar

    Spring集成MongoDB官方指定jar包:spring-data-mongodb-1.4.1.RELEASE.jar

    docker-mongodb:一个盒子里的MongoDB

    一个盒子里的MongoDB (!!! mongodb @ testing over alpine:edge !!!)使用MongoDB的基于AlpineLinux的Docker映像 用法 作为服务器: docker run -d --name mongodb -p 27017:27017 -v /data/mongodb:/var/lib/...

    puppet-mongodb:mongodb安装

    mongodb人偶模块 目录 概述 从OS存储库或从MongoDB社区/企业存储库在RHEL / Ubuntu / Debian上安装MongoDB。 模块说明 MongoDB模块管理mongod守护程序的mongod服务器安装和配置。 目前,它仅支持一个MongoDB服务器...

    feathers-mongodb:mongodb的羽毛服务

    羽毛mongodb 用于数据库适配器,使用用于。 $ npm install --save mongodb feathers-mongodb 重要提示: feathers-mongodb实现了和。 该适配器还需要一个数据库服务器。 原料药 service(options) 返回使用给定...

    mqemitter-mongodb:基于MongoDB的MQEmitter

    安装$ npm install mqemitter-mongodb --save例子var mongodb = require ( 'mqemitter-mongodb' )var mq = mongodb ( { url : 'mongodb://127.0.0.1/mqemitter?auto_reconnect'} )var msg = { topic : 'hello world'...

    MongoDB and Python Patterns and processes

    ### MongoDB与Python模式及流程详解 #### 一、引言 在当今的数据处理领域,MongoDB作为一种流行的文档导向型数据库,因其灵活性、可扩展性以及高性能而受到广泛欢迎。结合Python这一强大的编程语言,可以实现高效...

    stitch-android-sdk:MongoDB Stitch Android SDK

    对Stitch SDK的支持将于2021年11月1日完全终止。MongoDB Stitch Android / Java SDK 适用于Android / Java的官方 SDK。指数文献资料讨论 安装SDK工件由JCenter / Bintray托管在https://bintray.com/mongodb/MongoDB...

    loglog-mongodb:日志日志的 Mongodb 日志传输

    // Log to console and mongo var logger = logger . create ( 'App' , { transports : [ loglog . transports . console ( ) , require ( 'loglog-mongodb' ) ( { connection : 'mongodb://my_host/my_db' , ...

Global site tag (gtag.js) - Google Analytics