Mongoose查询嵌套文件大于或小于某个date
如何查询评论大于或小于某个date…
这是我的模式与Post模型和一个评论模型:
var mongoose = require('mongoose'); var should = require('should'); mongoose.connect("localhost","test_db"); var CommentSchema = new mongoose.Schema({ content: {type:String}, created_at: {type:Date, default:Date.now} }); var PostSchema = new mongoose.Schema({ title: {type:String}, content: {type:String}, comments: [CommentSchema] }); var Post = mongoose.model('Post',PostSchema); var Comment = mongoose.model('Comment',CommentSchema); var post = new Post({title:"hello world",comments:[{content:"1st comment"},{content:"2nd comment"}]}); // I saved it! and then I query for it var id = "5045d5be48af9f040f000002"; Post.find({ _id:id, "comments.created_at":{ $gte:(new Date())} },function(err,result){ console.log(result); });
我需要帮助查询embedded式文档…
好吧,我编辑我的代码给更多的细节。
这将返回一个空数组。 所以我想要的或者我所期望的是一个带有空的comments数组的Post。 但是用这个查询我根本没有得到一个post。 (当我用$ lte交换$ gte的时候,我明显的得到了2条评论)。
但是又如何根据我上面的描述过滤细节呢?
使用点符号到达embedded式arrays文档内部。 例如,要在date1
和date2
之间查询具有created_at
的Post
注释,请执行以下操作:
Post.find({ "comments.created_at": { $gt: date1, $lt: date2 }}, function (err, docs) { ... });
UPDATE
感谢编辑; 现在我明白你试图通过created_at
date过滤单个post的评论。 你不能直接使用MongoDB查询,但是我相信你可以用2.2的聚合框架来完成,如果你在那个版本的话。 以Jira上的这个function请求的讨论为例。