问题标签 [monger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
802 浏览

mongodb - Mongo DB dbStats 收集计数不正确

我注意到执行 dbStats 命令返回的集合数量不正确。

对于所有数据库,dbStats 返回一个额外的集合。因此,对于具有 2 个集合的数据库,dbStats 将返回 3。

收集计数错误与 mongo shell 和使用 Monger(最新版本 MongoDB Java 驱动程序的 clojure 包装器)一致。

这是故意的行为还是 MongoDB 中的错误?

0 投票
1 回答
1814 浏览

mongodb - 如何使用 Monger 更新/插入 MongoDB 子文档?

我正在使用Clojure 的 Monger库连接到 MongeoDB 数据库。

我想在我的 Mongo 数据库中更新、插入和删除子文档。MongoDB 的 $push 修饰符让我可以在搜索文档的根目录上执行此操作。但我希望能够 $push 到子集合上。看看Monger 的测试,它看起来是可能的。但我想确保我可以推送到第三位父母的孩子收藏。蒙格能做这样的事情吗?

更好的是能够在我的 $push 中有一个 $where 子句。这样的事情可能吗?

但即使在基本层面上,当我在我的 repl 中尝试以下命令时,我也会收到以下错误。

  1. “fubar”数据库肯定存在

  2. 我肯定连接到数据库

  3. { :owner "fubar@gmail.com" }标准绝对有效;和

  4. 我都试过"content.1.content""content.$.content"

有没有人遇到过这个并解决了?

谢谢

0 投票
2 回答
1795 浏览

mongodb - 自动将 Mongodb ObjectId 映射到字符串和从字符串映射

我正在使用 Monger 库从 Clojure 访问 Mongo 数据库。让我烦恼的一件事是在 ObjectId 实例和字符串之间来回切换。

例如,此代码(mc/find-maps "posts" {})将评估为将_id条目值设置为ObjectId类实例的映射,而在我的应用程序中,我发现将它简单地作为我知道它是唯一的字符串更有用。

另一方面,对于像这样的表达式:(mc/find-map-by-id "posts" (new ObjectId id))我确实使用 String 对象作为id参数,我必须使用它来构造ObjectId.

有没有办法_id自动和透明地在应用程序中的 Strings 和 mongo 端的 ObjectId 之间进行转换的值?某种选项,当启用时,创建带有 id 的字符串表示的映射,反之亦然,当用作查询中的参数时,转换 id 的字符串表示 t 对象 id?

如果没有,还有哪些其他策略可用?

0 投票
2 回答
941 浏览

mongodb - 使用 Monger 返回更新的文档

在 Monger 中有一个insert-and-return函数用于返回一个新插入的文档。

没有update-and-return功能。

如何从执行更新的函数返回更新的文档?

我想我可以使用save-and-return,但在我看来,我无法使用像$push这个函数这样的运算符。

0 投票
2 回答
4515 浏览

mongodb - 使用 monger 到从属实例的只读连接

我有一个副本集,我想建立与从属实例的独立只读连接。

通常,我应该不会遇到任何问题。我唯一应该做的就是设置slaveOk=true能够通过读取操作来查询它。当我使用nodejs或 mongo 控制台时它工作得很好,但我发现没有办法使用monger.

最奇怪的是,当我调用set-db!函数时出现异常:

MongoException 不与 master 交谈并重试用完 com.mongodb.DBTCPConnector.innerCall (DBTCPConnector.java:314)

建立副本集连接对我来说不是一个选项。

目前我正在使用[com.novemberain/monger "1.4.0"].

谢谢!


更新:我查看了Java MongoDB Driver API Documentation并找到了slaveOk方法。我写了以下代码,希望它能工作:

但我得到的只是一个新的例外:

MongoException 不掌握 com.mongodb.CommandResult.getException (CommandResult.java:100)

0 投票
1 回答
329 浏览

mongodb - 如何使用 monger 和 Clojure 向 mongodb 添加文档?

我以前没用过MongoDb,也没用过Monger。我正在开发一个 Clojure 应用程序。我只是希望能够添加一个文档,作为 upsert。这是我的一些代码:

我正在使用贩子:

http://clojuremongodb.info/

我拥有的 println 和 timbre/spy 语句正在将此数据打印到终端输出:

在持久数据到数据库中:{“serverUsed”:“/127.0.0.1:27017”,“updatedExisting”:false,“upserted”:{“$oid”:“510680444077296acfa67d6b”},“n”:1, “connectionId”:4,“err”:null,“ok”:1.0}

如果我在命令行登录 MongoDb,似乎集合仍然是空的:

db.timeout_discovery.find() { "_id" : ObjectId("51017c5fa86c7bcc3d423c4d"), "timeout" : "discovery" }

有一个文档,但里面除了“超时”和“发现”之外什么都没有。

我看这里试图弄清楚该怎么做,但我尝试的每一个变化都失败了:

http://clojuremongodb.info/articles/updating.html

这一行:

返回此文档(但我在此处将其缩短,因为原始文档很长,其中包含您在此处看到的更多 HTML):

在 get-data-to-be-persisted 中要持久化的文档是: { "e6e20a2c-cb46-498c-b2f2-743e2b38b917" : { "itinerary-as-string" : "\n \t\n \t\t

http://www.super.com/mexico/bars/2012-food-drink-award-nominees-best\" class=\"fn given-name url\">2012 年餐饮奖提名:最佳新啤酒吧

\n \t\t \t\t \n \n 投票现已结束\n在此处查看结果在餐厅 + 酒吧中查看更多信息

\n \t\n \t\n http://www.super.com/mexico/bars/2012-food-drink-award-nominees-best-new-beer-bar\">http://media. super.com/images/100131935/150/113/image.jpg\" /> \n \n \n \t\n \t\t

http://www.super.com/mexico/sex-dating/summer-dates-in-mexico-bars-and-restaurants\" class=\"fn given-name url\">夏季日期:食物和-在墨西哥酒吧和餐厅喝酒约会

\n \t\t \t\t

性与约会

\n \n \n 在这些夏季约会期间,在墨西哥热门景点享用晚餐或饮品。如果您要追求一个痴迷于食物的伴侣,请不要在本季的标准晚餐和电影之外。在纽约查看五个以食物和饮料为重点的夏季约会......

\n \t\n \t\n http://www.super.com/mexico/sex-dating/summer-dates\">http://media.super.com/images/100453911/150/113/图像.jpg\" /> \n \n \n \t\n \t\t

http://www.super.com/mexico/restaurants/organic\" class=\"fn given-name url\">有机

\n \t\t \t\t

美食美酒、美式风味、亚洲风味

\n \n \n \n $\n \n \n \n \n \n https://foursquare.com/intent/venue.html\" data-context=\"vcard-Content-Venue-50137\">保存到foursquare\n \n \n \n Tribeca fro-yo 狂热者可以在这家有机健康食品吧的第二个位置满足他们对健康的渴望。明亮的外卖店——配备木镶板和白色和绿色的柜台——还供应鲜榨果汁果汁和冰沙,...

编辑 \n \t \n \t\n \t\n http://www.super.com/mexico/restaurants/organic\">http://media.super.com/images/100461855/150/113 /image.jpg\" /> \n \n \n \n \t \n 275 Greenwich St, (Murray Sts 和 Warren Sts 之间), New York, 10007\n \t \n \t \t \n \t \t平均课程:9 美元。美国运通,光盘,MC,... \t \n \n http://www.super.com/mexico/restaurants/organic\">

那么,为什么不保存呢?

我没有在终端输出中看到任何错误,但如果有错误,我想要关于如何捕获并查看它的建议。

如果没有错误,我是否只是因为 MongoDb 或 monger 的语法错误?

0 投票
1 回答
390 浏览

mongodb - 有没有根据特定时区按天对记录进行分组的有效方法?

我正在使用 MongoDB 数据库来跟踪应用程序的分析。我正在编写一个 Clojure 应用程序(使用 clj-time 和 Monger)来从数据库中获取数据。

我有一个包含类似记录的集合

每个不同device的代表我的服务的不同用户。我想做的是找出我每天有多少(唯一)用户,但需要注意的是,我希望“一天”专门指美国/中部时区,考虑夏令时. (如果这不是一个要求,我想我可以做一些类似 a$group然后 a 的事情distinct。)

这是我一直在做的事情:

如果您看不懂 Clojure,这基本上是说:获取中央时区最近n 个午夜的列表,然后运行 ​​Mongo 查询以查找每对连续午夜之间的所有记录。然后,计算device每天不同 s 的数量。

这是我不喜欢这种方法的地方:

  1. 每天运行一个单独的查询(我通常一次查看 30 天)感觉不对;这是应该在数据库端而不是应用程序端完成的事情。
  2. 计算不同device的 s 也应该由数据库完成。
  3. 我的服务器设置为 UTC 时区,因此如果它在 UTC 午夜之后但在中央时间午夜之前,则此列表中的最后一个条目将始终为零。这很容易修补,但我更喜欢一个足够聪明的解决方案来首先防止它。
  4. 整个函数运行大约需要 500 毫秒。这并不可怕——我是唯一一个运行查询的人,而且每天只有一两次——但看起来这个操作不应该花那么长时间。

有没有办法可以将更多这种逻辑推入 MongoDB 查询?

0 投票
1 回答
88 浏览

clojure - Clojure 将 {"ab" 1, "ac" 2, "de" 3} 转换为 {:a {:b 1, :c 2}, :d {:e 3}}

我的 mongodb 模式有一个 JSON 层次结构。当我从 compojure 获取字段参数时,哈希是平点符号,如{"a.b" 1, "a.c" 2, "d.e" 3}. 我想使用 monger 来插入数据,但这需要一个真正的分层格式,如{:a {:b 1, :c 2}, :d {:e 3}}. 有没有办法自动从一种转换到另一种?

0 投票
1 回答
94 浏览

clojure - 不让 Monger 序列化

我是 Clojure 的新手,我遇到了 Monger 的问题。

我正在尝试将 Monger 与 Friend 一起使用。我有这个ns:

当我尝试使用 Monger 将其添加到数据库时

Monger 序列#{:cemerick.friend-demo.users/user}化为"user"有没有办法按原样放置该值,或者有什么方法可以更改"user"#{:cemerick.friend-demo.users/user}

0 投票
1 回答
1908 浏览

clojure - java.lang.RuntimeException: java.lang.NoSuchMethodError: 运行 clojure web 应用程序时

我正在尝试运行我编写的一个小型 Clojure Web 应用程序,但我从 lein ring 服务器得到一个异常,它没有给我任何有用的信息。我用谷歌搜索了这个错误并发现了这个讨论,它建议运行lein deps :tree以解决问题,但这已经被贬值了。

完整的堆栈跟踪:

项目.clj:

核心.clj:

有没有关于我可以对此异常做些什么的信息?感谢您的时间和考虑。