json 如何为mongodump写一个正确的mongodb查询?

k3fezbri  于 2023-08-08  发布在  Go
关注(0)|答案(4)|浏览(117)

我试图从我的数据库备份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。

58wvjzkj

58wvjzkj1#

我使用$oid方法解决了集合中字段“_id”的ObjectId类型问题,方法如下:
第一个月

o8x7eapl

o8x7eapl2#

我收集了这四个文件:

> db.test.find()
{ "_id" : ObjectId("5fab80615397db06f00503c3") }
{ "_id" : ObjectId("5fab80635397db06f00503c4") }
{ "_id" : ObjectId("5fab80645397db06f00503c5") }
{ "_id" : ObjectId("5fab80645397db06f00503c6") }

字符串
我使用mongodump进行二进制导出。这是在Windows操作系统上使用MongoDB v4.2。

>> mongodump --db=test --collection=test --query="{ \"_id\": { \"$eq\" : { \"$oid\": \"5fab80615397db06f00503c3\" } } }"
2020-11-11T11:42:13.705+0530    writing test.test to dump\test\test.bson
2020-11-11T11:42:13.737+0530    done dumping test.test (1 document)

wn9m85ua

wn9m85ua3#

以下是对使用Python的人的回答:
注意:您的系统上必须安装有Mongo数据库工具

import json
import os

# insert you query here
query = {"$oid": "5fa0bd32f7d5870029c7d421"}
# cast the query to a string
query = json.dumps(query)

# run the mongodump
command = f"mongodump --db my_database --collection my_collection --query '{query}'"
os.system(command)

字符串

k4ymrczo

k4ymrczo4#

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

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

字符串
没有其他的东西可以查询,比如标题吗?可能会让事情简单一点。
我从mongoDB文档中找到了这个。这是相当远的网页,但这里是链接。
https://docs.mongodb.com/database-tools/mongodump/#usage-in-backup-strategy

相关问题