小编N R*_*ghu的帖子

pymongo typeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument

我试图将数据从 SQL Server 迁移到 MongoDB,但在最后阶段将数据导入 MongoDB 时遇到类型错误。

mongoImp = dbo.insert_many(jArray)
  File "/home/lrsa/.local/lib/python2.7/site-packages/pymongo/collection.py", line 710, in insert_many
    blk.ops = [doc for doc in gen()]
  File "/home/lrsa/.local/lib/python2.7/site-packages/pymongo/collection.py", line 702, in gen
    common.validate_is_document_type("document", document)
  File "/home/lrsa/.local/lib/python2.7/site-packages/pymongo/common.py", line 407, in validate_is_document_type
    "collections.MutableMapping" % (option,))
TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping
Run Code Online (Sandbox Code Playgroud)

我还检查了type(jArray)哪个是str. 也尝试将数据类型转换为list,但未能成功。
我的代码:

import pyodbc
import json
import collections
import pymongo
from bson import json_util

odbcArray = …
Run Code Online (Sandbox Code Playgroud)

python sql-server json mongodb pymongo

7
推荐指数
1
解决办法
3万
查看次数

在 MongoDB 中使用 IF/ELSE

有人可以帮助在 mongoDB 中实现 IF/ELSE 吗?我在 SQL Server 中使用以下代码。

DECLARE @p =1
IF @p =1
PRINT @p
ELSE PRINT "NO"
Run Code Online (Sandbox Code Playgroud)

我在 MongoDB 中尝试了以下代码,但没有成功。

var p=1
{ $cond: { if: p=1, then: print(p), else: print("NO") } }
var p=1
{ $cond: { if: p=1, print(p), print("NO") } }
Run Code Online (Sandbox Code Playgroud)

mongodb

5
推荐指数
1
解决办法
1万
查看次数

Python解码Fernet密钥

我生成了一些Fernet密钥,并以str格式存储以供参考。现在,我需要将这些Fernet密钥以str格式编码为32个url安全的base64编码字节,以解密我的数据。

from cryptography.fernet import Fernet as frt
keys=set()
keybin='keys'
keybin=open(keybin,'w')

for i in range(r.randint(5,14)):
 key=frt.generate_key()
 keys.add(key.decode())

for k in keys:
 keybin.write(str(k))
 keybin.write('\n')
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的代码访问文件并解密 s

 key=linecache.getline(cfile,x).encode()
 key=base64.b64encode(key)
 print(key)
 f=frt(key)
 token =f.decrypt(s.encode())
Run Code Online (Sandbox Code Playgroud)

但是给我以下错误:

    "Fernet key must be 32 url-safe base64-encoded bytes."
ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
Run Code Online (Sandbox Code Playgroud)

python cryptography

4
推荐指数
1
解决办法
5832
查看次数

mongoDB 连接多个字段

我正在将 SQL 查询重写为 mongoDB。有人可以帮助我们如何使用多个连接键和条件连接两个集合,如下面的 SQL 查询所示。

SELECT S.* FROM LeftTable S
LEFT JOIN RightTable R ON S.ID =R.ID AND S.MID =R.MID WHERE R.TIM >0 AND S.MOB IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

我有下面的代码,它使用单连接键条件。如果有人可以帮助使用多个连接键和 where 子句来完成查询,我将很高兴。

db.dim.aggregate([{$lookup:{from:"dimFactsVer11",localField:"Sub", foreignField:"Type", as:"EmbedUp"}}])
Run Code Online (Sandbox Code Playgroud)

mongodb

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

mongodb ×3

python ×2

cryptography ×1

json ×1

pymongo ×1

sql-server ×1