我有一个问题,我希望能够获得一个集合的所有唯一城市,而我的代码如下所示:
var mongoose = require("mongoose"),
Schema = mongoose.Schema;
var PersonSchema = new Schema({
name: String,
born_in_city: String
});
var Person = mongoose.model('Person', PersonSchema);
在本地的MongoDb中,我可以做db.person.distinct("born_in_city")
,但是似乎没有与Mongoose等效的东西。是我自己遍历所有文档的唯一选择,还是有更好的解决方案?
为了尝试使用node-mongodb-native
应答者建议的基础,我尝试这样做:
mongoose.connection.db.collections(function(err, collections){
collections[0].distinct('born_in_city', function( err, results ){
console.log( err, results );
});
});
但是,该results
字段为空,没有错误。我还希望能够仅通过名称获取所需的集合,而不是collections
尽可能地过滤返回的内容。
只是为了给Mongoose 3.x更新:
MyModel.find().distinct('_id', function(error, ids) {
// ids is an array of all ObjectIds
});
问题内容: 一般而言,我对Mongoose和MongoDB还是很陌生,所以我很难确定是否可以进行以下操作: 有更好的方法吗? 编辑 如有任何混淆,我们深表歉意。我想做的是获取所有包含有趣标签或政治标签的商品。 编辑 没有where子句的文档: 使用where子句,我得到一个空数组。 问题答案: 对于大于3.2的现代MongoDB,您可以在大多数情况下用作替代。这也有实际上做加盟,而不是什么“在服务
问题内容: 我试图从循环中的猫鼬中获取记录。但是它没有按预期工作。我有一系列带有问题和答案的哈希,我正在尝试从数据库中查找那些问题。这是我的循环: 而终端的结果是这样的: 问题是我的问题在循环迭代后显示。因此,我无法处理它们。 请帮忙!问候 问题答案: 欢迎来到异步世界:-) 使用JavaScript,除了您的代码外,任何其他事情都会并行发生。这意味着在您的特定情况下,无法在循环结束之前调用回调。
问题内容: 是否可以查询特定日期? 我在mongo Cookbook中发现我们可以针对某个范围进行查询 ,例如: 但是可能有特定的日期吗?这不起作用: 问题答案: 如果您保存在数据库中的日期没有时间(恰好是年,月,日),那应该可行。 您保存的日期可能是,其中包括时间成分。要查询这些时间,您需要创建一个包含一天中所有时刻的日期范围。
问题内容: 我正在尝试使用Mongoose制作动态条件,但是它并没有像我想象的那样起作用。 代码是这样的 如您所见,我正在尝试使用“索引”变量创建动态条件。有可能这样做吗? 先感谢您! 问题答案: 您需要分两步创建对象: 更新资料 现在,node.js 4+支持计算的属性名称,您可以一步完成此操作:
问题内容: 我有以下情况。我需要基于某些参数构建猫鼬查询。 也就是说,如果通过这样的对象 执行以下搜索: 如果如果动作不在对象中,则需要从搜索中排除“动作”,该怎么办?像这样使用三元运算符不起作用,就像在DB中的is中搜索条目一样。 问题答案: 以编程方式建立查询对象:
问题内容: 我想在Monoose中将两个OR查询与AND结合在一起,例如以下SQL语句: 我在NodeJS模块中尝试了此操作,该模块仅从主应用程序获取模型对象: 但这是行不通的,所有OR条件都将像下面的SQL语句一样连接在一起: 如何在猫鼬中结合AND 和AND 的两个条件? 问题答案: 直接按以下方式创建查询对象可能是最简单的: 但是,您也可以使用最新的3.x Mongoose版本中提供的帮助程