如何为mongodump编写正确的mongodb查询?

问题描述

我正在尝试从数据库中备份3篇文章我有他们的ID,但是当我尝试使用mongodump时,我似乎无法编写正确的json查询。我收到JSON错误消息或一些神秘的cannot decode objectID into a slice消息。

这是我目前正在尝试运行的命令:

mongodump -d 'data' -c 'articles' -q '{"$oid": "5fa0bd32f7d5870029c7d421" }'

这将返回ObjectID into a slice错误,我不太了解。我也尝试使用ObjectId,就像这样:

mongodump -d 'data' -c 'articles' -q '{"_id": ObjectId("5fa0bd32f7d5870029c7d421") }'

但是这给了我一个invalid JSON错误

我尝试了各种形式的转义,转义双引号,转义美元,但似乎没有任何效果。我很绝望,我讨厌mongodb。我最能找到可行解决方案的地方是:

mongodump -d 'nikkei' -c 'articles' -q '{"_id": "ObjectId(5fa0bd32f7d5870029c7d421)" }'

我说最接近的,因为这没有失败,该命令运行了,但返回了done dumping data.articles (0 documents),这意味着,如果我正确理解,则不会保存任何文章

查询的正确格式是什么?顺便说一下,我正在使用mongodump版本r4.2.2。

解决方法

如果您查询的是JSON,请尝试使用此格式。

mongodump -d=nikkei -c=articles -q'{"_id": "ObjectId(5fa0bd32f7d5870029c7d421)" }'

除了标题,您还能查询什么吗?可能会使事情变得更简单。

我从mongoDB文档中拉了这个。页面很远,但是这里是链接。

https://docs.mongodb.com/database-tools/mongodump/#usage-in-backup-strategy

,

我有这4个文件的集合:

public IActionResult Index()
        {
            User _User = new User { UserId = 1,UserName = "sss" };
            var username = _User.UserName;
            return View();
        }

我使用> db.test.find() { "_id" : ObjectId("5fab80615397db06f00503c3") } { "_id" : ObjectId("5fab80635397db06f00503c4") } { "_id" : ObjectId("5fab80645397db06f00503c5") } { "_id" : ObjectId("5fab80645397db06f00503c6") } 进行二进制导出。这是在Windows操作系统上使用的是MongoDB v4.2。

mongodump