标签: mongo-shell

在mongodb中提取子数组值

MongoDB noob在这里......

我有一个如下集合......

    > db.students.find({_id:22},{scores:[{type:'exam'}]}).pretty()
    {
        "_id" : 22,
        "scores" : [
            {
                "type" : "exam",
                "score" : 75.04996547553947
            },
            {
                "type" : "quiz",
                "score" : 10.23046475899236
            },
            {
                "type" : "homework",
                "score" : 96.72520512117761
            },
            {
                "type" : "homework",
                "score" : 6.488940333376703
            }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

如何通过mongo shell仅显示测验分数?

mongodb mongo-shell

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

保存MongoDB查询的结果

在mongo shell中进行研究时,我经常编写非常复杂的查询,并希望将结果存储在其他集合中.我知道如何做到这一点.forEach():

db.documents.find(query).forEach(function(d){db.results.insert(d)})

但每次写这些东西都很乏味.有更干净的方式吗?我希望语法类似于db.documents.find(query).dumpTo('collectionName').

mongodb mongo-shell

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

Mongo shell中的新日期和ISO日期转换

我正在尝试使用某些日期条件的mongoExport,我在这里读到日期必须是epoch格式.

问题是,

我在下面试过,

> new Date(2013,10,16)
ISODate("2013-11-16T00:00:00Z")
Run Code Online (Sandbox Code Playgroud)

假设我给了Oct-16-2013,但是它让我'2013-11-16'.与纪元格式相同.

> new Date(2013,10,16)*1
1384560000000
> 
> new Date(1384560000000)
ISODate("2013-11-16T00:00:00Z")
Run Code Online (Sandbox Code Playgroud)

你能帮忙吗,为什么它把月份改为11?

javascript mongodb mongo-shell

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

未在mongo shell中设置的变量

我正在尝试使用mongo shell,我在mongo shell中存储值时遇到了挑战

当我在文档用户中找到用户时,我将其存储在变量doc中

> var doc = db.users.find({"username":"anil"});
Run Code Online (Sandbox Code Playgroud)

当我在mongo shell中输入doc时,我看到了json对象

> doc
{ "_id" : ObjectId("57325aaa48d9231b11e5cb81"), "username" : "anil", "email" : "mongodb@gmail.com" }
Run Code Online (Sandbox Code Playgroud)

但是,当我再次输入doc时,我什么也看不见.它走了..我在这里做错了什么?

> doc
>
Run Code Online (Sandbox Code Playgroud)

它可能很简单,但我没有得到它.有人可以指出我做错了什么吗?

mongodb mongo-shell mongodb-query

7
推荐指数
2
解决办法
1872
查看次数

为什么mongo会修剪空间?

我注意到在将文档保存到集合时,MongoDB将多个空间折叠在一起(放入一个空间).它不仅仅是前导和尾随空格,而是任何空间序列 - 只有空格,而不是所有空格(仅用空格和制表符测试).当使用Java驱动程序以及交互式mongo shell时会发生这种情况,所以我猜它是数据存储区本身的"特性".

不可否认,我不喜欢我的价值观中无关的空白,我在剥离它们的过程中发现了这一点.但是,这种行为似乎很奇怪,因为数据存储通常被期望避免"烹饪"或以其他方式更改数据,超出符合底层存储约束的最低限度.否则(未向用户/开发人员声明)可能导致数据丢失或精度降低.此外,为什么要折叠空间而不是在头部和尾部完全修剪它们 - 为什么它们会在非空间角色之间折叠呢?

    > db.test.remove()
    > db.test.save({x: "     x     \t\t\t     x     "})
    > db.test.findOne()
    { "x" : " x \t\t\t x " }
Run Code Online (Sandbox Code Playgroud)

我是否错误地启用了此功能,还是默认启用?我在JIRA上找不到任何东西.这对我来说似乎是一个错误,但也许我只是特别的.MongoDB版本2.0.2

mongodb mongodb-java mongo-shell

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

MongoDB - 如何只选择数字字符串/检查字符串是否为mongo-shell中的数字

我有一个集合,其中字段是字符串,但这些字符串可以有一个数值,例如:

myObject:{
examples:[
         {example:"words",...},
         {example:"more words",...},
         {example:"111",...},
         {example:"4502", ......}
         ...
         ]
...
}

如何以字符串格式查询"111"和"4502"以及任何其他数值?

mongodb mongo-shell

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

mongo shell,如何将查询定向到辅助

我对 mongo 非常陌生,我想从 mongo shell 将一些查询定向到辅助节点。

我读过的文档说要设置读取首选项。

具体来说

在 mongo shell 中, readPref() 游标方法提供对读取首选项的访问。

我已经阅读了有关 readPref 游标方法的文档(如果您感兴趣的话,请访问:http://docs.mongodb.org/manual/reference/method/cursor.readPref/#cursor.readPref),但是我无法这行得通。

mongos> cursor.readPref(secondary);
2015-10-15T10:03:47.480+0000 E QUERY    ReferenceError: cursor is not defined
    at (shell):1:1

readPref(secondary);
2015-10-15T10:04:16.224+0000 E QUERY    ReferenceError: secondary is not defined
    at (shell):1:10

mongos> readPref('secondary');
2015-10-15T10:04:37.848+0000 E QUERY    ReferenceError: readPref is not defined
    at (shell):1:1
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能想到的所有组合,但总是遇到引用错误。

我错过/不明白什么?

mongodb mongo-shell

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

javascript forEach()函数如何迭代mongodb shell中的文档?

javascript forEach()函数如何在mongodb shell中工作?

处理文件的顺序是什么?

例如,假设我有两个大集合,这两个集合应该包含相同数量的文档(注意文档的结构不一定相同),我想迭代第一个并查看是否为每个文档在第一个集合中,第二个集合中有一个记录:

db.MyColl.find().forEach(
    function(aDocument) { 
        print("Checking :"+aDocument._MyId)
        var db2 = db.getSiblingDB("mySiblingDb");
        var aDocument2 = db2.MyColl.findOne({_MyId: aDocument._MyId});    
        if (aDocument2 == null) { 
           print("Missing document with _MyId: " + aDocument._MyId);
        }  
    }
);
Run Code Online (Sandbox Code Playgroud)

这段代码是否会以相同的顺序迭代文档?

javascript foreach mongodb mongo-shell

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

$lookup 具有相同的集合

我是 MongoDB 的新手,所以我不确定我是否正确地表达了我的问题。

我有一个集合,其中的数据如下所示:

{ 
    "_id" : ObjectId("66666"), 
    "Id" : 994, 
    "PostType" : 1, 
    "AnswerId" : 334, 
    "CreationDate" : ISODate("1994-09-05T09:34:36.177+0000"), 
    "Tags" : "test", 
    "Parent" : null, 
}

{ 
    "_id" : ObjectId("8888"), 
    "Id" : 334, 
    "PostTypeId" : 2, 
    "AnswerId" : NaN, 
    "CreationDate" : ISODate("20005-08-03T11:29:42.880+0000"), 
    "ParentId" : 994
}
Run Code Online (Sandbox Code Playgroud)

两个文档都在同一个集合中,我尝试使用 PostType:1 文档中的 AnswerId,并使用该值作为主 ID 来提取其 CreationDate。

这是我试图实现的逻辑,但它似乎不起作用:

db.collection.aggregate([
    {$project:{_id:"$Id", Title:"$Title", Answerid:"$AnswerId", QuestionDate:"$CreationDate"}},
    {$match:{Id:"$Answerid"}},
    {$project:{AnswerDate:"$CreationDate"}}
])
Run Code Online (Sandbox Code Playgroud)

我愿意接受任何建议。

mongodb mongo-shell mongodb-query nosql-aggregation aggregation-framework

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

将本地mongo db迁移到地图集后,无法从地图集中获取记录

我使用以下过程将本地数据库迁移到地图集

  1. 使用mongoexport --db bla --collection usersettings --jsonArray --out ~/Desktop/users.json命令逐个导出db集合
  2. 使用mongoimport --host cluster0-shard-00-00-c7jiq.mongodb.net:27017 --db Eltar --type json --file ~/Desktop/userotp.json --authenticationDatabase admin --ssl --username name --password pass命令在atlas上导入这些集合

现在,当我连接到本地mongo shell并运行查询时,db.users.find()它显示所有记录,但是当我db.users.find()在连接atlas shell后运行相同的查询时,它只显示一条记录.

记录显示在地图集上,但无法使用查询获取它们

不知道我在这里做错了什么,任何帮助将不胜感激谢谢.

dbmigrate mongodb atlas mongo-shell

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