MongoDB (Deprecated)

These procedures are deprecated in favor of apoc.mongo.* procedures .

Available Procedures

Qualified Name Type Release

apoc.mongodb.count

- perform a find operation on mongodb collection

Procedure

APOC Full

apoc.mongodb.delete

- delete the given documents from the mongodb collection and returns the number of affected documents

Procedure

APOC Full

apoc.mongodb.find

- perform a find,project,sort operation on mongodb collection

Procedure

APOC Full

apoc.mongodb.first

- perform a first operation on mongodb collection

Procedure

APOC Full

apoc.mongodb.get

- perform a find operation on mongodb collection

Procedure

APOC Full

apoc.mongodb.insert

- inserts the given documents into the mongodb collection

Procedure

APOC Full

apoc.mongodb.update

- updates the given documents from the mongodb collection and returns the number of affected documents

Procedure

APOC Full

Install Dependencies

The Mongo procedures have dependencies on a client library that is not included in the APOC Library.

This dependency is included in apoc-mongodb-dependencies-4.3.0.12.jar, which can be downloaded from the releases page. Once that file is downloaded, it should be placed in the plugins directory and the Neo4j Server restarted.

Alternatively, you could copy these jars into the plugins directory:

  • bson-3.4.2.jar

  • mongo-java-driver-3.4.2.jar,

  • mongodb-driver-3.4.2.jar

  • mongodb-driver-core-3.4.2.jar

You should be able to get them from the following links:

Field description

  • hostorkey: the MongoDB host in the format mongodb://<HOST_NAME>:<PORT> or a url defined into the apoc config apoc.mongodb.myInstance.url=mongodb://<HOST_NAME>:<PORT>, which can be invoked by simply passing myInstance

  • db: the db name

  • collection: the collection name

  • query: query params

  • projection: projection params

  • sort: sort params

  • compatibleValues (false|true): converts MongoDB data types into Neo4j data types

  • skip: num of documents to skip

  • limit: num of documents to limit

  • extractReferences (false|true): if true and a field contains an ObjectId it will include the related document instead of the ObjectId

  • objectIdAsMap (true|false): extract the ObjectId as map

  • documents: the documents to insert

  • update: the updated params

Examples

Following an example that could help to understand the behaviour of extractReferences, compatibleValues and objectIdAsMap:

Given the following collections:

// Product
...
{"_id": ObjectId("product1"), "name": "Product 1", "price": 100}
{"_id": ObjectId("product3"), "name": "Product 2", "price": 200}
{"_id": ObjectId("product3"), "name": "Product 3", "price": 300}
...
// Person
...
{"_id": ObjectId("person"), "name": "Andrea", "bought": [ObjectId("product1"), ObjectId("product3")]}
...

With the extractReferences=true, compatibleValues=true and objectIdAsMap=false:

{
  "_id": "person",
  "name": "Andrea",
  "bought": [
    {"_id": "product1", "name": "Product 1", "price": 100},
    {"_id": "product3", "name": "Product 3", "price": 300}
  ]
}

With the extractReferences=true, compatibleValues=true and objectIdAsMap=true:

{
  "_id": {
  	"timestamp": <...>,
	"machineIdentifier": <...>,
	"processIdentifier": <...>,
	"counter": <...>,
  },
  "name": "Andrea",
  "bought": [
    {
      "_id": {
	  	"timestamp": <...>,
		"machineIdentifier": <...>,
		"processIdentifier": <...>,
		"counter": <...>,
	  },
	  "name": "Product 1",
	  "price": 100
	},
    {
      "_id": {
	  	"timestamp": <...>,
		"machineIdentifier": <...>,
		"processIdentifier": <...>,
		"counter": <...>,
	  },
	  "name": "Product 3",
	  "price": 300
	},
  ]
}

With the extractReferences=false, compatibleValues=false and objectIdAsMap=false:

{
  "_id": "person",
  "name": "Andrea",
  "bought": ["product1", "product3"]
}

Example

CALL apoc.mongodb.first('mongodb://localhost:27017','test','test',{name:'testDocument'})

If you need automatic conversion of unpackable values then the cypher query will be:

CALL apoc.mongodb.first('mongodb://localhost:27017','test','test',{name:'testDocument'},true)