mongoose 分类查询查询多少种分类

mongodb 查询某一天所有信息的3种方法,根据日期查询 - 快乐每一天 - ITeye博客
博客分类:
// mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。
// 第一种方式:
coll.aggregate([
{$project:{sendDate: {$substr: ['$sendTime', 0, 10]}, sendTime: 1, content:1}},
{$match:{sendDate: ''}},
// 第二种方式(第二种的变异):
coll.aggregate([
{$match: {'sendTime': {'$gte': new Date(''), '$lt': new Date('')}}}
// 第三中方式(第二种的变异):
coll.aggregate([
{$match: {'sendTime': {'$gte': new Date(' 00:00:00'), '$lte': new Date(' 23:59:59')}}}
// 查询结果如下(展示一种方式:其他展示略有不同):
[ { _id: aac90e9fb7995, sendDate: '' },
{ _id: aac90e9fb7996, sendDate: '' },
{ _id: aac90e9fb7997, sendDate: '' } ]
Description
Returns: 0 if the two values are equivalent, 1 if the first value is greater than the second, and -1 if the first value is less than the second.
Returns true if the values are equivalent.
Returns true if the first value is greater than the second.
Returns true if the first value is greater than or equal to the second.
Returns true if the first value is less than the second.
Returns true if the first value is less than or equal to the second.
Returns true if the values are not equivalent.
浏览: 2583703 次
来自: 上海
这不是邮编,这是区号
刚开始以为被黑客盯上了呢,太坑了,谢谢博主。
真是太坑爹了
dragonhunter 写道你就是个2bInteger.pa ...mongodb的各种查询方法 - 畅行天下 - ITeye博客
博客分类:
1.查询比较写法:
查询某个字段比指定值小:$lt
//假设存在集合USERdb.USER.find({REGIST_DATE:{$lt:new Date()}});
/*前面提到过mongo完全遵守JAVASCRIPT语法,在JAVASCRIPT里面,月份是从0开始的,即上面的查询是查询以前注册的的用户。*/
查询某个字段比指定值大:$gt
db.USER.find({REGIST_DATE:{$gt:new Date()}});
/*$lt表示小于,表示大于的自然就是$gt了*/
大于等于:$gte
小于等于:$lte
db.USER.find({REGIST_DATE:{$gte:new Date(),$lte:new Date()}});
/*关于这个时间的问题看起来似乎有些别扭哈,没办法啦,MONGO就是这样啦。习惯就好啦。*/
/*上面的一行查询就是针对REGIST_DATE的组合查询形式,表示查询出所有在到注册的用户*/
2.$in---相当于sql的in,它可以利用索引
db.USER.find(NAME:{$in:['tom','jerry']});
/*如果为NAME字段创建了索引,它就会从索引里面查找*/
/*mongo是区分大小写的,所以集合和文档属性的名字必须与创建它们的时候一致。*/
/*也就是NAME和name是两个不同的属性,它们可以同时存在于一个文档内*/
/*在一个集合内如果即存在NAME属性的文档,又存在name属性的文档,那么上面的那条命令不会把name属性查询出来*/
$nin---$in的相反操作,相当于sql的not in
db.USER.find(NAME:{$nin:['tom','jerry']});
注意:$nin不会利用索引,也就是说上面的命令$nin不会使用针对NAME属性的索引。
$all---没有sql类似的特性与之类比了
它的意义在于:查询条件是一个简单值数组,只有返回属性满足数组内的所有值的文档。这种查询条件只有在属性值是一个数组的情况下。
下面要查询同时包含'nosql'和'mongo'这两个标签的博文
db.blog.find(tags:{$all:['nosql','mongo']});
$ne---不等性比较,它接收单值或数组
db.blog.find(tags:{$ne:'nosql'});//返回所有不包含nosql标签的博文
db.blog.find(tags:{$ne:['nosql','mongo']});//返回所有不包含nosql和mongo这两个标签的博文
$size---检查一个数组的尺寸,不利用索引,不能做范围查询,以后可能会增加这方面的支持
有时iteye会给用户快递一些奖品,iteye可能会把用户曾经填过的地址保存下来。可以这么保存
在USER集合里增加一个address属性,没有留过地址的可以没有。
$not---取反值,只有在没有指定相反操作时才需要用到它。因为绝大部分操作符都有对应的相反操作,所以应当尽量使用相反操作符,比如正则表达式匹配没有相反操作
假如有一天,ITEYE只允许用户名以字母开头了就可以把所有不以字母开头的用户查出来给他们发一封邮件,让他们改名。
db.USER.find(accountName:{$not:/^[a-zA-Z]/})
当然$not也接收单值,但是不建议使用
$exists----检查某个属性的存在性。
比如要把所有包含附件的博文查询出来。
db.blog.find({attachment:{$exists:true}});
没有附件的就是db.blog.find({attachment:{$exists:false}});
或才可以这样做:
db.log.find({attachment:null});//不存在
db.blog.find({attachment:{$ne:null}});//存在
$mod-----求余数,不利用索引
假如说某天ITEYE心血来潮要给所有年龄能被4整队的用户快递一份奖品。
db.USER.find({age:{$mod:[4,0]}});//数组的第一个值是除数,第二个值是期望的余数
$type---以属性类型查询
虽然不建议在同一集合的不同文档相同属性名保存着不同类型的数据,但是有时由于程序bug或设计不严谨可能会出现这种情况。现在要把这种情况找出来,比如_ID属性有的是ObjectID类型,有的是整数。下面把所有_ID是字符串的文档找出来。
db.USER.find(_id:{$type:2})
db.USER.find(_id:{$not:{$type:7}});//把所有主键ObjectID类型的文档找出来
$and----逻辑运算
它们的意义就不多解释了。不过它们的用法非常有意思
比如找出所有月收入在20000以上或2000以下的用户
db.USER.find({$or:[{salary:{$gt:20000}},{salary:{$lt:2000}}]});
找出所有月收入在8000以上,20000以下的用户
db.USER.find({$and:[{salary:{$gte:8000}},{salary:{$lte:20000}}]});
$where-----接收一段javascript代码作为查询条件,不利用索引
假如说要查询所有闰年出生的用户
db.USER.find({$where:'var year=birthday.getFullYear();return year%4==0 && year%100&0 || year%400==0';});
浏览: 159500 次
来自: 北京
1 楼的,赞!
javascript 阻止事件继续执行--冒泡行为控制 - h ...
只要修改java代码,就需要重新编译,发布,才能运行的啊hon ...
您好请教一下,关于springmvc 在控制层controll ...问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
const postSchema = mongoose.Schema({
title: String,
type: Number,
default: 0
imagesrc: String,
type: mongoose.Schema.Types.ObjectId,
ref: 'tag'
category: {
type: mongoose.Schema.Types.ObjectId,
ref: 'category'
createTime: {
type: Date,
default: Date.now
lastEditTime: {
type: Date,
default: Date.now
hidden: Boolean,
excerpt: String,
content: String,
comments: [
type: mongoose.Schema.Types.ObjectId,
ref: 'comment'
const categorySchema = mongoose.Schema({
name: String
文章和分类两个模型定义如上,文章schema有一个分类的外键,请问如何最高效率的查询出所有分类以及分类下的文章总数,返回一个集合
来源: MongoDB 技术问答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
大概思路:
1、aggreate -- $group
db.post.aggregate([
_id: $category,
count: {$sum: 1}
2、forEach去关联到Category表
.forEach(function(doc){
var cate = db.category.findOne({_id:doc._id});
if (cate !== null) {
doc.category_name = cate.
doc.category_name = 'not found';
db.resultSummary.insert(doc);
效率需要查看执行计划具体分析。供参考
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:mongoose 有没有类型skipwhile的方法? - 知乎2被浏览167分享邀请回答0添加评论分享收藏感谢收起01 条评论分享收藏感谢收起

我要回帖

更多关于 mongoose 分类查询 的文章

 

随机推荐