小编use*_*199的帖子

为什么db.insert(dict)在使用pymongo时将_id键添加到dict对象

我用以下方式使用pymongo:

from pymongo import *
a = {'key1':'value1'}
db1.collection1.insert(a)
print a
Run Code Online (Sandbox Code Playgroud)

这打印

{'_id': ObjectId('53ad61aa06998f07cee687c3'), 'key1': 'value1'}
Run Code Online (Sandbox Code Playgroud)

在控制台上.我知道_id被添加到mongo文档中.但为什么这也添加到我的python字典中呢?我不打算这样做.我想知道这是什么目的?我可以将此字典用于其他目的,并将字典更新为将其插入文档的副作用?如果我必须将这个字典串行化为一个json对象,我会得到一个

ObjectId('53ad610106998f0772adc6cb') is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

错误.在db中插入文档时,insert函数不应该保持字典的值相同.

python dictionary mongodb pymongo

10
推荐指数
1
解决办法
6587
查看次数

使用CASE的NHibernate订单

我在使用nhibernate hql进行排序时遇到了一个大问题.我有一个表LICENSE,它有一个属性USER(对应一个USER类),它将它链接到另一个表USERPROFILE.USERPROFILE表有一个属性UserName,它是nvarchar(USER类中的字符串).LICENSE的此USER属性可以为null,具体取决于是否分配了许可证.

我必须获取按USER属性排序的过滤许可证列表.我希望所有具有空用户的许可证位于列表的底部,并且所有其他许可证按字母顺序排序在其USER的USERNAME属性上.我使用了以下查询:

from License license where <various filters> order by CASE WHEN User IS NULL THEN '0' ELSE User.UserName END"
Run Code Online (Sandbox Code Playgroud)

我从这个查询中得到的只是已分配许可证的列表.不返回具有null USER的所有许可证.有人可以帮帮我.

此外,当我使用"按用户IS NULL那样'命令时'0'ELSE User.UserName END"时,只有那些非空用户的结果出现,但是当我使用"按用户输入时用户IS NULL那么"0 "ELSE User.UserProfileId END"或简单地"按用户排序"所有用户出现但他们的排序顺序基于UserProfileId而不是userName(因为UserProfileId是外键).我使用了最新版本的nhibernate但没有任何成功.

我想知道是否有任何方法可以做我想要完成的事情......

nhibernate sql-order-by

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

标签 统计

dictionary ×1

mongodb ×1

nhibernate ×1

pymongo ×1

python ×1

sql-order-by ×1