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仅显示测验分数?
在mongo shell中进行研究时,我经常编写非常复杂的查询,并希望将结果存储在其他集合中.我知道如何做到这一点.forEach():
db.documents.find(query).forEach(function(d){db.results.insert(d)})
但每次写这些东西都很乏味.有更干净的方式吗?我希望语法类似于db.documents.find(query).dumpTo('collectionName').
我正在尝试使用某些日期条件的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?
我正在尝试使用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将多个空间折叠在一起(放入一个空间).它不仅仅是前导和尾随空格,而是任何空间序列 - 只有空格,而不是所有空格(仅用空格和制表符测试).当使用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
我有一个集合,其中字段是字符串,但这些字符串可以有一个数值,例如:
myObject:{
examples:[
{example:"words",...},
{example:"more words",...},
{example:"111",...},
{example:"4502", ......}
...
]
...
}
如何以字符串格式查询"111"和"4502"以及任何其他数值?
我对 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)
我已经尝试了我能想到的所有组合,但总是遇到引用错误。
我错过/不明白什么?
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)
这段代码是否会以相同的顺序迭代文档?
我是 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
我使用以下过程将本地数据库迁移到地图集
mongoexport --db bla
--collection usersettings --jsonArray --out ~/Desktop/users.json命令逐个导出db集合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后运行相同的查询时,它只显示一条记录.
记录显示在地图集上,但无法使用查询获取它们
不知道我在这里做错了什么,任何帮助将不胜感激谢谢.