安卓上的MongoDB

70
有人知道MongoDB在Android上是如何工作的吗?它是本地工作并在之后复制数据吗?还是只能在线使用并且需要一个网络后端?

1
我们一直在寻找类似的内容,目前找到的最接近的是http://www.couchbase.com/products-and-services/couchbase-mobile。 - Devraj
1
几乎所有的答案都已过时,请查看此链接 https://realm.io/docs/java/latest - humble_wolf
7个回答

55

MongoDB提供了多个操作系统的下载链接,但是Android系统并不在这些可用的系统之列。

人们使用MongoDB作为“网络服务”来存储数据,但它没有支持多主复制或偶尔连接的移动端场景的任何特性。

如果你需要这些功能类型,你应该看看CouchDB,它专门针对这种情况提供了Android Couchbase


3
这个问题是在2011年7月回答的。到了2013年6月,情况现在看起来怎么样? - Jakub Czaplicki
5
MongoDB的下载页面仍然列出了相同的支持。而且,MongoDB确实不适用于像Android这样的设备。它将数据映射到内存的方式对于具有有限RAM的小型设备不是一个好主意。Android Couchbase项目似乎已经被放弃并被“Lite”版本所取代:https://github.com/couchbase/couchbase-lite-android。 - Gates VP
4
请查看 PouchDB。它是一个使用浏览器数据库进行存储的CouchDB实现。可用于Android:http://pouchdb.com/ - Mike McKay
4
mongo-java-driver现在可用于Android,用于连接到MongoDB的Web服务器。 - Anonsage

40

我打算恢复这个帖子,并且说明MongoDB的Java驱动程序目前与Android兼容。一些新手开发人员可能会遇到麻烦,无法让他们的应用程序使用MongoDB的java库,因此我将概述您需要执行的操作(尽管在您阅读此内容时,所有这些可能已过时)。

进入您的应用程序build.gradle文件。 在依赖项下添加这个“编译”条目(您可能需要替换版本号):

dependencies {
  ...
  implementation 'org.mongodb:mongo-java-driver:3.0.3'
}

如您所见,本文发布时的驱动程序版本为3.0.3。您可以通过在http://search.maven.org搜索“mongo-java-driver”或相关术语来查找当前版本。

如果您要连接外部数据库,则需要在清单文件中添加INTERNET权限。连接一个数据库非常简单,以下是一个示例。请更换用户名、密码、主机域、端口和数据库名称:

MongoClientURI uri = new MongoClientURI( "mongodb://username:password@www.example.com:12345/db-name" );
MongoClient mongoClient = new MongoClient(uri);
MongoDatabase db = mongoClient.getDatabase(uri.getDatabase());

由于这与网络相关,您需要在AsyncTask类中运行所有内容。

从这里开始遵循java教程https://www.mongodb.org/ 应该相对简单。


1
这可能会重复使用Apache lib进行HTTP通信时发生的情景,其中Android有更优化版本。当Android停止支持它时,人们面临问题。 - Neji
1
直接从 Android 应用程序连接到 MongoDB 存在几个缺点,如果可能的话应该避免。从安全角度来看,服务器位置和凭据对于任何可以反编译您的应用程序的人都是可用的。从操作角度来看,管理连接池变得困难或不可能,并且可能会出现各种性能或可扩展性问题。 - cjungel
2
讽刺的是,亲爱的@Astral1990,在这里你看起来很新手,你正在谈论mongo客户端,而我们在寻找本地mongodb对象/文档存储解决方案。 - Ravinder Payal
上述解决方法并不清晰,请你能否明确一下? - Jeyaseelan

3

Dory mongoDB 服务器

这是一款全新的 Android 应用程序
无需 root 手机,您可以从任何地方运行 js 文件。


MongoDB(来自“巨大”)是一个免费且开源的跨平台文档导向数据库程序。MongoDB 被归类为 NoSQL 数据库程序,它使用具有模式的类 JSON 文档。

用法:
1:安装 Dory mongoDB 服务器
2:运行您的服务器
3:安装 Dory node.js
4:在您的 js 文件中运行以下代码:

代码:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', { useMongoClient: true });
mongoose.Promise = global.Promise;

var Cat = mongoose.model('Cat', { name: String });

var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log('meow');
  }
});

愉快地使用吧。


谢谢。即使是谷歌搜索也没有找到这个应用程序。 - rsmoorthy

2

1

MongoDB也可用于Android
唯一的问题是它没有为Android提供良好结构化的文档。

我最近成功将我的Android应用连接到远程数据库。

这里有一个示例单元应用程序https://github.com/i-sachinkumar/MongoDB-for-Android

它的自述文件包含了后端和Android Studio中需要遵循的所有步骤。


0

由于MongoDB的最新版本不支持Android设备的CPU架构,因此无法在Android设备上安装MongoDB。

但是我在codipher.com上读到了一篇文章,尝试了一下,最终成功了,我能够在我的Android手机上使用MongoDB。

这是链接:https://codipher.com/install-mongodb-on-android/


0

2年后再次激活此话题。

我一直在寻找一个与MongoDB Compass完全相同的Android应用程序,但是找不到“完全”相同的。所以决定自己制作一个(并开源)

根据@Astral1990答案中提供的链接,我发现了this

现在简要介绍一下:

Gradle文件:(更多信息请参见here

implementation 'org.mongodb:mongodb-driver-sync:4.2.3'

创建客户端的方法:(更多信息请点击此处
MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1");

然后是其他事情:

// get db
MongoDatabase database = mongoClient.getDatabase("test");
// get collection in db
MongoCollection<Document> coll = database.getCollection("myTestCollection");
// list collections (permission has to be present)
for (String name : database.listCollectionNames()) {
    System.out.println(name);
}

查询和其他


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接