Tag: mongodb

通过mongo shell更新mongoDB中的嵌套数组

以下是一个MongoDB文档: { "_id" : 2, "mem_id" : M002, "email" : "xyz@gmail.com", "event_type" : [ { "name" : "MT", "count" : 1, "language" : [ { "name" : "English", "count" : 1, "genre" : [ { "name" : "Action", "count" : 6 }, { "name" : "Sci-Fi", "count" : 3 } ], "cast" : [ { […]

如何更新一个MongoDB文档的_id?

我想更新一个文档的_id MongoDB。 我知道这不是一个很好的实践。 但是由于某些技术原因,我需要更新它。 但是,如果我尝试更新它,我有: > db.clients.update({'_id':ObjectId("4cc45467c55f4d2d2a000002")}, {'$set':{'_id':ObjectId("4c8a331bda76c559ef000004")}}); Mod on _id not allowed 而更新不是。 我怎样才能真正更新它?

MongoDB:使用来自同一文档的数据更新文档

我有一个文件列表,每个文件都具有经纬度属性(等等)。 { 'lat': 1, 'lon': 2, someotherdata […] } { 'lat': 4, 'lon': 1, someotherdata […] } […] 我想修改它,看起来像这样: { 'coords': {'lat': 1, 'lon': 2}, someotherdata […]} { 'coords': {'lat': 4, 'lon': 1}, someotherdata […]} […] 到目前为止,我有这样的: db.events.update({}, {$set : {'coords': {'lat': db.events.lat, 'lon': db.events.lon}}}, false, true) 但它将db.events.lat和db.events.lon视为string。 我怎样才能参考文件的属性? 干杯。

在mongodb中存储date/时间的最佳方法

我见过使用string,整数时间戳和mongodate时间对象。

在mongodb中实现分页

我知道使用skip来执行分页是一个不好的做法,因为当数据变大时, skip开始消耗大量的内存。 克服这个麻烦的一个方法是使用_id字段的自然顺序: //Page 1 db.users.find().limit(pageSize); //Find the id of the last document in this page last_id = … //Page 2 users = db.users.find({'_id'> last_id}). limit(10); 问题是 – 我是mongo的新手,不知道什么是最好的方法来得到这个last_id

Mongoose总是返回一个空的数组NodeJS

我已经尝试使用find和findOne并且都不返回文档。 find返回一个空数组而findOne返回null 。 在这两种情况下都是err 。 这是我的连接: function connectToDB(){ mongoose.connect("mongodb://localhost/test"); //i have also tried 127.0.0.1 db = mongoose.connection; db.on("error", console.error.bind(console, "connection error:")); db.once("open", function callback(){ console.log("CONNECTED"); }); }; 这是我架构: var fileSchema = mongoose.Schema({ hash: String, type: String, extension: String, size: String, uploaded: {type:Date, default:(Date.now)}, expires: {type:Date, default:(Date.now()+oneDay)} }); var Model = mongoose.model("Model", fileSchema); 我的查询在这里: Model.find({},function(err, file) […]

MongoDb比较两个字段的查询条件

我有一个集合T ,有两个字段: Grade1和Grade2 ,我想select那些条件为Grade1 > Grade2 ,我怎样才能得到像在MySQL中的查询? Select * from T Where Grade1 > Grade2

MongoDB:是否可以做一个不区分大小写的查询?

例: > db.stuff.save({"foo":"bar"}); > db.stuff.find({"foo":"bar"}).count(); 1 > db.stuff.find({"foo":"BAR"}).count(); 0

MongoDB:如何改变字段的types?

在Stackoverflow中有一个问题,与我的问题非常相似。 问题是这个问题的答案是Java驱动程序,我试图在shell中执行。 我正在这样做… db.meta.update({'fields.properties.default': { $type : 1 }}, {'fields.properties.default': { $type : 2 }}) 这不行!

了解meteor发布/订阅

我有一个简单的应用程序设置,显示Projects列表。 我已经删除了autopublish包,以便我不会将所有内容发送到客户端。 <template name="projectsIndex"> {{#each projects}} {{name}} {{/each}} </template> 当autopublish开启时,这将显示所有的项目: if Meteor.isClient Template.projectsIndex.projects = Projects.find() 随着它被删除,我不得不另外做到: if Meteor.isServer Meteor.publish "projects", -> Projects.find() if Meteor.isClient Meteor.subscribe "projects" Template.projectsIndex.projects = Projects.find() 那么,说客户端的find()方法只search从服务器端发布的logging是否准确呢? 它一直在绊倒我,因为我觉得我应该只调用find()一次。