How to remove column from child collection

佐手、 提交于 2019-12-02 20:55:34

The update with the empty parameter doesn't seem to work. I tried it in the mongo shell and mongoconsole. In the mongoconsole it gave an error about update expecting the first parameter to be an array or an object.

However, you can do the same thing using the $exists find query.

Try:

`db.CrawlUser.update( {CrawlStatuses:{$exists:true}}, { $unset: { "CrawlStatuses.LastErrorMessage": 1 } }, false, true);`

That worked for me.

Keep in mind that based on the docs, $exists doesn't use an index, so it will be slower. I suggest adding a parameter that you can add an index on and query it when doing the $unset.

Looks like you have a couple of issues here.

#1: The $unset command

As far as I can see, this should work just fine. I got the following output on my test:

MongoDB shell version: 1.6.5
connecting to: test
> db.foo.save( { _id : 1, status : { err : 'blah', y : 1 } } )
> db.foo.save( { _id : 2, status : { err : 'blahblah', y : 5 } } )
> db.foo.find()
{ "_id" : 1, "status" : { "err" : "blah", "y" : 1 } }
{ "_id" : 2, "status" : { "err" : "blahblah", "y" : 5 } }
> db.foo.update( { }, { $unset : { "status.err" : 1 } }, false, true )
> db.foo.find()
{ "_id" : 1, "status" : { "y" : 1 } }
{ "_id" : 2, "status" : { "y" : 5 } }

#2: Using up RAM

if I do the $unset command on a column in a collection that is very large, mongodb uses up all of the ram on the server (as if it's trying to store the entire collection in memory)

That's exactly what MongoDB is trying to do. MongoDB uses memory-mapped files. MongoDB will pull all of the data into RAM and let the operating system manage the virtual memory concerns.

So when you do a query with no indexes, you're basically asking MongoDB to walk through every item in the collection. It's basically a giant for loop operating on all of your data, so this is going to require loading everything from disk.

Up to now, this is all normal.

... then the server crashes

This is not normal. I have run this type of update command on hundreds of millions of documents without crashing the server. Are you able to provide any more detail on this problem? Do you have log files?

If so, I would suggest taking your bugs to the Google Groups, so they can help identify the source of the crash. http://groups.google.com/group/mongodb-user

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!