蒙皮查询检查文档$是否存在,使用一个变量作为查询键
Mongoskin query check if document $exists using a variable as Query Key
使用Mongoskin,我想检查一个文档是否存在于MongoDB集合中,其中每个文档都有一个唯一的键和一个数组作为其值。下面的代码可以完美地工作:
db.collection('buyerRec').find({ "abcd" : { $exists : true }}, { _id:0 }).toArray(function(err, doc) {
...
});
找到"abcd"文档。然而,在实际的系统设计中,文档的查询键是事先不知道的,所以我需要使用一个变量来代替"abcd"。我找不到合适的组合。它总是返回一个空数组,在两种失败的情况下-
失败示例1:
console.log("idCode: " + typeof idCode + " " + idCode); // idCode: string abcd
db.collection('buyerRec').find({ idCode : { $exists : true }}, { _id:0 }).toArray(function(err, doc) {
...
});
失败的示例2:
console.log("idCode: " + typeof idCode + " " + idCode); // idCode: string abcd
var query = "'"" + idCode + "'"";
console.log("query: " + typeof query + " " + query); // query: string "abcd"
db.collection('buyerRec').find({ query : { $exists : true }}, { _id:0 }).toArray(function(err, doc) {
...
});
对我来说,这两个失败的例子中的一个应该重复了第一个例子的预期操作。有人可以引导我,我需要如何重新编码这个?Thx .
我认为你的问题可能是创建使用属性名称变量的js对象。你可以试着这样做:
fieldName = "abcd"
var query = {};
query[fieldName] = {"$exists": true};
db.collection('buyerRec').find(query)
但是上面的代码实际上不是那么好,因为fieldName没有作为参数传递。在我的. mongoc .js(mongo shell每次启动时都会加载. mongoc .js)中,我为这种情况编写了一个函数,供参考。
DBCollection.prototype.has = function(fieldName) {
var query = {}; // construct a empty object
query[fieldName] = {"$exists": true};
return db.getCollection(this._shortName).find(query).pretty();
}
那么你就可以这样写查询:
db.buyerRec.has("abc") // in mongo shell
但是,我认为你实际上必须编写自己的函数,因为我的函数只关注于检查某个键是否存在。无论如何,希望这对你有帮助。
相关文章:
- 如何在mysql查询(NODE.js)中重复使用一个参数
- 向更新mysql查询传递一个id
- 是否有一个javascript库来解析简单的查询
- 初学者反应查询(如何删除一个元素并附加另一个元素)
- iron路由器将参数添加到字符串中,并添加一个查询
- PHP MySQL 在一个页面和一个查询中插入具有多行的数据
- j查询 如何选择当前元素之后的下一个元素
- php中的mysql查询不起作用,但它在另一个php文件中起作用
- 一个在线服务,我可以查询一个随机的历史人物的名字
- 如果sql查询成功,请打开一个新选项卡
- Couchdb:是否可以从另一个视图中查询一个视图
- 为什么可以't我查询一个刚刚通过append()添加的元素
- Jquery为多个元素和事件查询一个事件处理程序
- 基于 MongoDB 中另一个集合中的数据查询一个集合中的数据
- MongoDB:如何查询一个名为"版本”;
- 我如何使用BreezeJS查询一个以上条件的子实体
- 查询一个嵌套的数组对象
- 查询一个时间段内有效的对象列表
- 如何在MongoDB中查询一个布尔值的字段,并返回一个布尔值,无论它是true还是false
- 查询一个async的多个Ember关系不会触发任何ajax请求