Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/DataIntellectTech/mongoq
A C shared lib along with associated q functions to allow push/pull access to mongoDB from within kdb+
https://github.com/DataIntellectTech/mongoq
Last synced: 18 days ago
JSON representation
A C shared lib along with associated q functions to allow push/pull access to mongoDB from within kdb+
- Host: GitHub
- URL: https://github.com/DataIntellectTech/mongoq
- Owner: DataIntellectTech
- License: mit
- Created: 2015-02-23T16:47:39.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-03-19T11:07:06.000Z (over 9 years ago)
- Last Synced: 2024-08-10T06:02:00.700Z (3 months ago)
- Language: C
- Size: 161 KB
- Stars: 16
- Watchers: 47
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mongoq
## About
A C shared lib along with associated q functions to allow push/pull access to mongoDB from within kdb+## Installation
- Install the mongo c driver libraries | [repo](https://github.com/mongodb/mongo-c-driver) | [instructions](https://github.com/mongodb/mongo-c-driver/blob/master/TUTORIAL.md)
- Clone the mongoq git repo
- Compile shared object using platform specific instructions below###### Linux (64 bit)
```
gcc -o mongoq.so mongoq.c $(pkg-config --cflags --libs libmongoc-1.0) -I./ -shared -fPIC
```
###### Windows
```
CL /DWIN32 /I C:\usr\include\libbson-1.0 /I C:\usr\include\libmongoc-1.0 /LIBPATH C:\usr\lib\bson-1.0.lib /LIBPATH C:\usr\lib\mongoc-1.0.lib /LD mongoq.c q.lib /DEF mongoq.def
```- copy the shared library file from the bin folder to the location of your q executable - e.g. $QHOME/l32
- copy mongo.q to $QHOME## Usage
#### Load and initialise library
This assumes there is a MongoDB server running on the local machine on the standard port - amend the connection details as required for your MongoDB setup
```
\l mongo.q
.mg.init[`localhost;27017;`kdb]
```#### Insert data to MongoDB
```
q).mg.add[`test] `a`b`c!(1;`xyz;12t) / single record
00000000-54ef-b9bd-dfa8-32369e099741
q)r:.mg.add[`test] ([]time:3 4t;sym:`IBM`MSFT;price:23.4 56.7) / table
```#### Query data from MongoDB
The '.mg.add' function returns a 16 byte UID type, which maps to the MongoDB ObjectID key of the inserted record. We can use these ids to retrieve data:
```
q).mg.find[`test;;()] r / all fields for id(s) r in table 'test'
time sym price
---------------------------
"03:00:00.000" "IBM" 23.4
"04:00:00.000" "MSFT" 56.7
q).mg.find[`test;;`sym`price] r / only sym & price fields
sym price
------------
"IBM" 23.4
"MSFT" 56.7
```## Examples
- [Comments database](examples/COMMENTS.md)