相关疑难解决方法(0)

如何用pymongo对mongodb进行排序

我在查询我的mongoDB时尝试使用排序功能,但它失败了.相同的查询在MongoDB控制台中有效但在此处不起作用.代码如下:

import pymongo

from  pymongo import Connection
connection = Connection()
db = connection.myDB
print db.posts.count()
for post in db.posts.find({}, {'entities.user_mentions.screen_name':1}).sort({u'entities.user_mentions.screen_name':1}):
    print post
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

Traceback (most recent call last):
  File "find_ow.py", line 7, in <module>
    for post in db.posts.find({}, {'entities.user_mentions.screen_name':1}).sort({'entities.user_mentions.screen_name':1},1):
  File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/cursor.py", line 430, in sort
  File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/helpers.py", line 67, in _index_document
TypeError: first item in each key pair must be a string
Run Code Online (Sandbox Code Playgroud)

我在其他地方找到了一个链接,说如果使用pymongo,我需要放置一个'u'的钥匙,但这也不起作用.其他人让这个工作或这是一个错误.

python mongodb pymongo

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

在限制结果之前,您如何告诉Mongo对集合进行排序?

我想从集合中选择最新的文档.mongodb这个问题的答案:如何获得最后的N条记录?表明查询中的操作顺序很重要.然而,情况似乎并非如此(也许自Mongo 2.4发布以来).我已经尝试了以下两个查询,看起来Mongo首先应用限制然后执行排序.

查询1

myCollection.find().sort( { '$date': 1 }).limit(50, callback);
Run Code Online (Sandbox Code Playgroud)

查询2

myCollection.find().limit(50).sort( { '$date': 1 }, callback);
Run Code Online (Sandbox Code Playgroud)

什么是正确的查询告诉mongo排序第一和限制第二?

编辑---这是该系列的示例文档

{
  _id: ObjectId("517eb0dddbab79c74700005d"),
  audioFiles: [
    {
      audioFileName: "C64FEFA8-DD43-40A1-8996-35948F3438BF-6896-0000027BD4A59D91",
      audioLanguage: "English",
      date: ISODate("2013-05-21T16:23:04.006Z"),
      flag: "1",
      user: "36C4DEB6-C13D-4211-94B5-CC4DD993ECF1-6896-00000278FA7B08EC"
    },
    {
      audioFileName: "994B6DF6-73B5-458F-912A-FF67A84534B2-23532-0000020000000000",
      audioLanguage: "English",
      date: ISODate("2013-05-27T10:45:04.107Z"),
      flag: "1",
      user: "9D7BB3F4-371B-4F2A-8DA2-0C4CE8B4E16D-974-0000000000000000"
    }
  ],
  date: ISODate("2013-04-29T17:41:49.101Z"),
  imageFileName: "SteamLokomotive0498",
  random: 0.6750695831142366,
  thumbFileName: "SteamLokomotive0498_150x150",
  user: "62923D8E-00CE-4F0C-AECA-3010D78FC9CE-226-0000000000000000",
  userLanguagePref: "Cantonese"
}
Run Code Online (Sandbox Code Playgroud)

mongodb

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

如何在mongoDB中获取最后50个文档?

如何在mongoDB中获取最后50个文档?

我有一个由...制作的集合

db.createCollection("collection",{capped:true, size:300000});
Run Code Online (Sandbox Code Playgroud)

从这个"集合"

我想有最后50个文件而不是前50个文件.

我知道我可以通过使用获得前50个文档

db.collection.find().limit(50);
Run Code Online (Sandbox Code Playgroud)

但是如何才能获得最近50份文件?

这可以通过MongoDB API简单地完成,还是应该通过编程来实现?

lastinsertid mongodb

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

在Robo3T中,如何添加自定义功能

我刚刚安装了 Robo3T(以前名为 robomongo),它有一个 mongo db 的 GUI。我想添加一个自定义函数来帮助我按正常顺序获取最后N个文档,查询语句是这样的:

db.getCollection('i1801').find().skip(db.getCollection('i1801').count() - 1200)
Run Code Online (Sandbox Code Playgroud)

我从stackoverflow(mongodb:如何获取最后N条记录?)中发现,这可以写成这样的函数:

function last(N) {
    return db.collection.find().skip(db.collection.count() - N);
}
Run Code Online (Sandbox Code Playgroud)

我回到我的 Robo3T,尝试添加自定义功能last(),但没有成功,功能选项卡下没有显示任何内容。

我附上了一些说明此问题的屏幕截图:

尝试添加自定义功能

创建自定义函数并保存

保存后没有任何反应

单击“保存”按钮后,没有任何反应,功能选项卡下仍然没有任何功能。日志显示last已创建的函数以及正在刷新的函数选项卡。 这是日志

那么,如何在这里添加last功能呢?

javascript mongodb robo3t

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

标签 统计

mongodb ×4

javascript ×1

lastinsertid ×1

pymongo ×1

python ×1

robo3t ×1