从mongoDB中删除文档

时间:2011-06-11 04:48:19

标签: ruby mongodb mongomapper

这可能是一个非常愚蠢的问题,但我是MongoDB的新手,所以请耐心等待。我创建了一个独立的ruby类:

require 'rubygems'
require 'mongo'

require 'bson'
require 'mongo_mapper'

MongoMapper.database = "testing"

class Twit
  include MongoMapper::Document

  key :id,          Integer, :unique => true
  key :screen_name, String,  :unique => true

...

然后我用irb

执行以下操作
>> twit = Twit.all.first
 => #<Twit _id: BSON::ObjectId('4df2d4a0c251b2754c000001'), id: 21070755, screen_name: "bguestSB"> 
>> twit.destroy
 => true 
>> Twit.all
 => [#<Twit _id: BSON::ObjectId('4df2d4a0c251b2754c000001'), id: 21070755, screen_name: "bguestSB">] 

那么如何销毁MongoDB中的文档?我做错了什么?

4 个答案:

答案 0 :(得分:4)

想象一下,您要删除所有带有“name”字段的文档。所以这是代码:

require 'rubygems'
require 'mongo'

db = Mongo::Connection.new("localhost").db("db_name")
coll = db.collection("coll_name")

coll.find({:name => ""}).each do |empty_doc|
  coll.remove(empty_doc)
end

答案 1 :(得分:0)

不知道ruby,但是命令行shell是:

db.Twit.remove({_id: '4df2d4a0c251b2754c000001'});

答案 2 :(得分:0)

感谢您对此问题的所有帮助。对于有此问题的其他人,我认为是因为我忘了将mongodb二进制文件的位置添加到$PATH变量

在我的案例中,我在/usr/local/mongodb/bin中安装了二进制文件,因此我需要将export PATH=/usr/local/mongodb/bin:$PATH添加到~/.bash_profile

答案 3 :(得分:0)

使用此代码按ID删除文档:

collection.remove({"_id" => BSON::ObjectId("4df2d4a0c251b2754c000001")})