MongoDB的结果

时间:2012-06-05 07:27:17

标签: mongodb derbyjs

我遇到了Derby和Mongo的两个问题。我来自MySQL和Redis背景,所以也许我只是做错了什么?

1)似乎我无法搜索类型为ObjectId的Id。

model.query("users").byKey(params.userId);

只会匹配_id是一个字符串的记录..我想这是可以的,除非数据“更新”时Racer会创建一个带有ObjectId _id的新记录!所以基本上我不能通过我用Racer插入的id来检索文档!

2)每次进行查询时,我都会找回对象的对象,例如:

{ '$spec': true, 
    '4fcd4c8e6c8c89d97ed90f4a': { "username": ... },
    '4fcd4c8e6c8c89d97ed90f4b': { "username": ... },

这意味着我必须将其转换为对象列表。我编写了一个函数来创建_id的列表,然后将其分配给模型变量以与refList一起使用。感觉就像这样的黑客,这不是正确的方法。

2 个答案:

答案 0 :(得分:2)

版本在0.3.11版本中进行了大量更新。模型现在具有内置的model.filter()和model.sort()方法,这些方法将取代手动构建密钥列表并向Derby发出更高效的阵列更新事件的需要。

请参阅Queries README

答案 1 :(得分:0)

我不是derbyjs用户,但是这里有一些关于你的问题的建议:

1)关于“Id is ObjectId”?

似乎id必须是一个对象,请参阅DerbyDoc/Persistance

  

使用自然映射将Racer路径转换为数据库集合和文档:   collection.documentId.document

     

...

     

//根路径中的第一个和第二个段必须是对象

您如何保存数据?作为一般建议,完整的可重现代码将改善您可以获得的帮助。

2)“我需要将查询结果转换为列表”?

根据我对其他引擎的经验,看来你确实没有使用正确的方法。所有这些都取决于你想对结果做什么,但一种非常常见的方法是使用对象列表,最后在模板循环中获取属性。在您的情况下,它将意味着直接将查询结果传递给page.render调用。见DerbyDoc/sections

希望这有帮助

亚历