我用以下方式使用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函数不应该保持字典的值相同.
我在使用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但没有任何成功.
我想知道是否有任何方法可以做我想要完成的事情......