【问题标题】:MongoDump query with BinData使用 BinData 进行 MongoDump 查询
【发布时间】:2014-01-30 15:49:18
【问题描述】:

Mongodump 文档指定您可以使用特定查询进行转储

mongodump --host localhost --db mydb --collection testCollection --query "{SomeKey: 'some value'}"

我将 _ids 字段存储为 BinData,是否可以对此进行查询?

我试过了

mongodump --host localhost --db mydb --collection testCollection --query "{_id: 'BinData(3,ryBRQ+Px0kGRsZofJhHgqg==)'}"

没有运气。

【问题讨论】:

    标签: c# mongodb mongodb-.net-driver


    【解决方案1】:

    你不需要那么逃避。您可以只在查询之外使用单引号,在查询内部使用双引号,即但请注意将类型设为十六进制,表示“03”而不是“3”

    mongodump --host localhost --db test --collection bd --query
    '{"_id" : { "$binary" : "ryBRQ+Px0kGRsZofJhHgqg==", "$type" : "03" } }'
    

    【讨论】:

      【解决方案2】:

      不幸的是,这需要很多转义。此外,您必须改用$binary 表示,例如

      mongodump --host localhost --db test --collection bd --query 
      "{\"_id\" : { \"$binary\" : \"ryBRQ+Px0kGRsZofJhHgqg==\", \"$type\" : \"03\" } }"
      

      注意$type 必须是十六进制字符串,而不是数字。

      在 linux 中,您还必须将 $ 转义为 \$

      【讨论】:

      • 我试过了,它运行了,但没有匹配的结果。在 MongoVue 中,我可以看到我的 _id 字段存储为 Binary - 3:UuidLegacy,这也与您在查询中规定的类型相同。我不知道为什么它什么都不返回。我尝试运行您在 MongoVue 中提供的未转义查询,但也没有产生任何结果。
      • 我在发布之前在我的 win7 机器上进行了测试,它确实有效。你运行的是linux还是windows?你运行哪个 mongo 版本? (我的:2.5.4)
      • 我运行的是 2.2.2,Windows 7。
      • 可以升级 MongoDB 吗? (无论是 2.2.7 还是 2.4.9,这是当前的稳定版本),2.2.2 是博物馆软件
      • 我的人为错误,我确认它适用于 2.2.2 和 2.4.9。另外,为“museumware”投票。我以专业身份使用它,因此无法考虑升级。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2019-10-23
      • 1970-01-01
      相关资源
      最近更新 更多