Articles of 集合

build立一个集合caching是一个好习惯吗?

我正在用MongoDB和Node.js一起使用插件node-mongodb-native 。 我遇到的一个问题是嵌套callback的数量。 我试图通过减less查询所需的代码来简化一些事情。 而不是这个… db.collection("test", function(err, collection) { collection.find(…).toArray(function(err, results) { // … }); }); …我正在考虑构build一个充当caching集合的对象,这样第一个callback就没有必要了。 我使用下面的代码来构build对象: var collections = {}; ["test", "foo"].forEach(function(name) { db.collection(name, function(err, coll) { collections[name] = coll; }); }); 有了它,我可以清理第一个代码片段: collections.test.find(…).toArray(function(err, results) { // … }); 我想知道这是否是一个好的做法。 它工作得很好,但我想获得一个集合的callback是有原因的。 像我现在所做的那样构build集合caching是否有意义?

MongoDB组查询在terminal中工作,在nodejs文件中抛出错误

我有一个查询,在terminal查询我的mongodb集合工作正常,但是在我想分组数据的函数内,我收到以下错误: // QUERY WORKS: /* > db.twitterhashtags.group({ key: {"text":true}, initial: {sum:0}, reduce: function(doc, prev) {prev.sum +=1}}); [ { "text" : "spnyc", "sum" : 1 }, { */ //RUNNING QUERY CAUSES THIS ERROR: // TypeError: undefined is not a function // at Collection.group.scope (/Users/propstm/Projects/nodeproject/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/collection.js:1341:16) //at g (events.js:185:14) 这是引发上述错误的代码行。 db.collection("twitterhashtags").group({ key: {"text":true}, initial: {sum:0}, reduce: function(doc, prev) […]

Node + mongo-native:如何查找和更新集合中的值?

我有用户帐户,按时间到期。 时间以毫秒为单位存储在MongoDB中。 用户由_id标识。 这是架构: { "_id": { "$oid": "506a1438be4f73c11c000002" }, "email": "admin", "password": "admin", "first_name": "admin", "last_name": "admin", "country": "USA", "group": "admin", "expires": 1349129272918 } 要为用户帐户添加+ N天,我使用find(),然后更新()(不知道为什么,但findAndUpdate无法获得以前的值): app.post('/users/add', function(req,res){ addDays(req.body.id, req.body.days, function(status){ res.send(200); }) }); function addDays(id, days, callback) { var obj_id = BSON.ObjectID.createFromHexString(id); db.collection("users", function(error, collection) { collection.find({_id: obj_id}, function(err, user) { var oldexp […]

NodeJS,TypeScript和typescript集合

我想从NodeJS中的typescript集合中使用Dictionary类: /// <reference path="../../../scripts/collections.ts" /> var collections = require('../../../scripts/collections'); export class AsyncProcessorCommand implements interfaces.IAsyncProcessorCommand { public static Type = 'RabbitMon.AsyncProcessorCommand:RabbitMon'; public GetType = () => 'RabbitMon.AsyncProcessorCommand:RabbitMon'; public ID: string; constructor(public Action: string, public Arguments?: collections.Dictionary<string, string>) { this.ID = uuid.v4(); this.Arguments = new collections.Dictionary<string, string>(); //I've also tried the following //this.Arguments = new collections.Dictionary<string, string>((key: […]

使用asynchronous库来组装来自数据库的所有标签

我正在使用sails.js创build一个标记系统,它与一个名为Post的实体具有多对多的关系。 我做关联的方式是使用数据库表来关联每个tagId和postId 。 每个post可以有多个标签。 在检索{tagId : 'tagId, postId: 'postId'}对象的数组后,我需要检索每个tagId的标签名称。 我使用async库,但标记名称(string)数组返回一个空的,从日志信息,我可以看到,返回发生在迭代器函数完成之前。 我的代码如下: var tagIdPostIds = [ {tagId : 'abcx', postId: 1}, {tagId : 'abce', postId: 1}, {tagId : 'abcd', postId: 1}, ]; if (tagIdPostIds) { var tagsArr = []; //container of tag names var findTagById = function(tagIdPostIdObj, cb) { var tagId = tagIdPostIdObj.tagId; Tag.findOneById(tagId, function (err, […]

db.collectionNames在Node.js中不起作用

我想检查一下在Node.js中是否存在一个集合。 我使用db.collectionNames获取数据库中的名称列表,但没有发生任何事情。 代码: connectDB(DBURL).then(function(db) { console.log('db connect ok'); db.collectionNames('test', function(err, collectionNames) { console.log('get collection names'); if(err) console.log(err); else console.log(collectionNames); }); }, function(err) { console.log(err); }); connectDB(DBURL)是一个promise对象,它工作的很好。 输出: app-0 try to connect db app-0 db connect ok 你可以看到collectionNames的函数没有任何输出。 我不知道为什么。 我可以通过db.getCollectionNames在Mongo shell中获取集合名称: > db.getCollectionNames() [ "system.indexes", "test" ]

通过这个node.js字典获得值的关键

我正在使用这个node.js收集模块。 http://www.collectionsjs.com/ 我想从字典中获得价值的关键。 这是我的代码; "use strict"; var Dict = require("collections/dict"); var Data_type = new Dict( { "00": "DATA_NOT", "01": "DATA_SENSOR", "02": "DATA_SENSOR2", "03": "DATA_SENSOR3", }); 从钥匙中获得价值很简单。 Data_type.get("00"); 将返回DATA_NOT 。 但是,我在获得价值的钥匙方面遇到了问题。 最好,我想做一些像Data_type.getKey("DATA_NOT"); 并返回"00" 。 欢迎任何其他方法。

JavaScript地图对象是否被索引来优化map.get?

在V8的幕后,JavaScript-Map-object的键以某种方式build立索引,以优化map.get方法? 或者map.get()只是简单地遍历整个地图,直到发现一个关键匹配? 我对map.get的500,000个以上键/值对的较大映射的效率感兴趣。 我有这么多的映射,我只想caching在内存中,而不是查询数据库的密钥已经索引的快速检索。 在我看来,查询RAM而不是数据库会更快,如果Map对象的键在某种程度上在后台索引。 抽象: function randomUniqueThing() { // returns (magically) a unique random: // string, number, function, array or object. } var objMap = new Map(); var count = 0; var thing1,thing2; while(count < 500000) { thing1 = randomUniqueThing(); thing2 = randomUniqueThing(); objMap.set(thing1, thing2); count++; } var lastValue = objMap.get(thing1); // Will getting […]

NodeJS / Mongo:通过各种集合循环查询

我正在寻找通过使用NodeJS驱动程序的 MongoDB通过各种集合循环查询。 对于这个testing,我使用'findOne'文档中的示例代码在各种Collections中插入一堆文档: collection.insertMany([{a:1, b:1}, {a:2, b:2}, {a:3, b:3}], {w:1}, function(err, result) { test.equal(null, err); 同时创build各种集合(每个集合至less有一个先前插入的文档实例): testing TEST1 TEST2 TEST3 TEST4 TEST6 test10 我想要的是收集我在数据库中的集合列表(在我的情况下是'test' ): var MongoClient = require("mongodb").MongoClient, test = require("assert"); MongoClient.connect("mongodb://localhost:27017/test", function(err, db) { db.listCollections().toArray(function(err, items) { test.ok(items.length >= 1); console.log(items); db.close(); }); }); 然后popup前面提到的collections列表。 到目前为止,一切都是正确的! 我甚至可以遍历数组来获取集合的名称: var MongoClient = require("mongodb").MongoClient, test = […]

在nodejs脚本中列出mongo数据库中的所有集合

我已经find了几个在shell中列出集合的答案,但是我已经发现在nodejs脚本中列出集合的所有答案似乎已被弃用,像collectionNames和moongose.connection.db返回没有方法的答案。