标签: mongodb-shell

Mongodb:从mongo shell中的ObjectId执行日期范围查询

我有一个看起来像这样的集合:

{
  _id: ObjectId("50a68673476427844b000001"),
  other fields
}
Run Code Online (Sandbox Code Playgroud)

我想做一个范围查询来查找两个日期之间的记录.我知道我可以从mongo shell var中的ObjectId获取日期:

var aDate = ObjectId().getTimestamp()
Run Code Online (Sandbox Code Playgroud)

但是目前还没有一种方法(据我现在可以搞清楚)创建一个仅包含时间戳部分的ObjectId - 我认为我的理想解决方案是无功能的mongo shell代码将是:

var minDate = ObjectId(new Date("2012-11-10"));
var maxDate = ObjectId(new Date("2012-11-17"));
Run Code Online (Sandbox Code Playgroud)

使用minDate和MaxDate作为范围值.

有没有办法在SHELL中做到这一点 - 我对一些驱动程序产品不感兴趣.

mongodb mongodb-shell

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

尝试启用Mongo DB身份验证时发生TypeError

我正在尝试启用Mongo DB身份验证的第3步.当我尝试通过Mongo shell创建一个完全按照方向指示的用户时,shell会报告:

TypeError:对象admin的属性"createUser"不是函数

我用--auth选项启动了mongod并切换到了admin数据库.一如既往,帮助赞赏.

mongodb mongodb-shell

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

MongoDB $或查询

我在mongo shell中运行以下查询:

db.Profiles.find ( { $or: [ {"name": "gary"}, {"name": "rob"} ] } )
Run Code Online (Sandbox Code Playgroud)

它只是没有按预期返回(JSON)?

mongodb mongodb-shell

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

如何在mongo shell中对输出进行分页

是否可以从mongo shell中将结果传递给寻呼机?

mysql cli等效于:

mysql> pager少

usability mongodb mongodb-shell

8
推荐指数
1
解决办法
2358
查看次数

MongoDB $ lookup不使用索引

我正在编写一个需要在两个表之间进行$ lookup的查询,据我所知,对ForeignField拥有索引以便及时执行此连接至关重要。但是,即使在字段上添加了索引之后,查询仍然会回退到COLLSCAN。

db.users.aggregate([
  {$lookup:{ from: "transactions", localField: '_id', foreignField: 'uid', as: 'transaction' }},
  { $match: { transaction: { "$size" : 0} } },
  { $count: "total"},
], { explain: true })
Run Code Online (Sandbox Code Playgroud)

返回:

"queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "test.users",
    "indexFilterSet" : false,
    "parsedQuery" : {

    },
    "winningPlan" : {
        "stage" : "COLLSCAN",
        "direction" : "forward"
    },
    "rejectedPlans" : [ ]
}
Run Code Online (Sandbox Code Playgroud)

如前所述,我确实在事务集合中索引了uid字段:

> db.transactions.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        }, …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-shell mongodb-query aggregation-framework

8
推荐指数
1
解决办法
2872
查看次数

mongodb调试 - ReferenceError:未定义控制台

我有js文件mongodb在我得到console.log调试表达式的地方运行:

use test;
db.city.find().snapshot().forEach(function(city){
    var Pos = city.Pos;

    if (Pos) 
    {
        longLat = Pos.split(" ");
        console.log("longLat");  // for debugging ----------------------------  
        console.log(longLat);

        lon = longLat[0];
        lat = longLat[1];

        if (lon && lat)
        {
            lon = parseFloat(lon);
            lat = parseFloat(lat);
            longLat = [lon, lat];
            city.longLat = longLat;

        }

    }
    db.orgs.save(city);

})
Run Code Online (Sandbox Code Playgroud)

当我运行它...

mongo < /path/to/this/js/file.js
Run Code Online (Sandbox Code Playgroud)

...输出中出错:

ReferenceError: console is not defined
Run Code Online (Sandbox Code Playgroud)

有没有办法记录中间结果以进行调试?

javascript mongodb mongodb-shell

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

如何查找Mongodb是否在shell脚本中以auth模式运行?

我正在运行mongodb实例,它在我的服务器机器上运行auth模式.目前我使用shell scipt来判断是否有mongodb实例正在运行.如何检查mongodb是在auth模式还是非auth模式下运行.

unix shell mongodb mongodb-shell

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

从 MongoDB shell 获取当前脚本路径

我正在客户端中为 MongoDB shell 编写 JavaScript 代码。如何获取正在执行的脚本文件的路径?请注意,这不是 的值pwd()。例如,我正在/my_scripts/utils.js执行/my_path

> mongodb --nodb /my_scripts/utils.js
Run Code Online (Sandbox Code Playgroud)

sopwd()返回,但是如何获取当前执行文件(即 )的/my_path完整路径(或 值的相对路径) ?pwd()/my_scripts/utils.js

mongodb mongodb-shell

6
推荐指数
1
解决办法
2903
查看次数

具有授权的MongoDB 2.4副本集

如何为mongodb 2.4.1设置适当的授权。我的设置似乎无法正常工作。副本成员配置:

dbpath = /vol/data/mongodb/

# logfile
logpath   = /var/log/mongodb/mongodb.log
logappend = true

# socket
bind_ip = 0.0.0.0
port = 27018

# replication
replSet = <%= hostname[14,4] %>

# authentication
keyFile = /etc/mongodb.pass

# turn off legacy privilege mode
setParameter = supportCompatibilityFormPrivilegeDocuments=false
setParameter = textSearchEnabled=false

# turn off authorization
auth = true
Run Code Online (Sandbox Code Playgroud)

添加用户授权后:

> use admin
> db.addUser( { user: "admin", pwd: "xxx", roles: [ "userAdminAnyDatabase", "readWriteAnyDatabase", "dbAdminAnyDatabase" ] } )
Run Code Online (Sandbox Code Playgroud)

我无法访问rs。*命令。

> use admin
> db.auth('admin','xxx')
1
> rs.status() …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-shell

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

mongosh 中的 Promise 或 async/await?

我有一个 mongosh 脚本,应该同步执行。我可以在 mongosh 中使用 Promise 或 async/await 吗?看来我不行了 有没有办法确保事情不会乱序执行?

例如

(1) db.clients.find({}).forEach((client) => {
  db.addresses.insertMany([
    { ....
    }

(2) db.addresses.find({}).forEach...
Run Code Online (Sandbox Code Playgroud)

当 1 仍在循环时,2 由 mongosh 执行。有什么想法吗?

mongodb-shell

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