A Common Lisp interface to MongoDB providing document operations, indexing, map-reduce, and declarative query macros.
cl-mongo is a Common Lisp interface to MongoDB that allows developers to interact with the document database directly from Lisp. It provides functions for inserting, updating, deleting, and querying documents, as well as support for indexing, map-reduce, and declarative query macros. It solves the problem of integrating MongoDB into Common Lisp applications without requiring external drivers or complex bindings.
Common Lisp developers who need to work with MongoDB databases, particularly those building data-intensive applications or preferring to stay within the Lisp ecosystem for database interactions.
Developers choose cl-mongo for its native Lisp integration, declarative query macros that simplify complex operations, and the ability to run map-reduce jobs directly from the REPL, offering a seamless workflow for Lisp-centric development with MongoDB.
lisp interface to mongo db
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The README highlights macros like $<= and $index for a more expressive, Lisp-native query syntax, replacing verbose key-value constructs with cleaner code.
Enables direct execution of MongoDB map-reduce operations from the Lisp REPL using embedded JavaScript functions, as shown in the sample session and $map-reduce macro.
The do-query function processes results in batches concurrently for improved performance, with the README noting optimizations that reduce memory footprint.
Uses Lisp data structures like hash tables and documents via make-document, allowing seamless integration without external serialization, demonstrated in the sample session.
The README admits missing critical features like GridFS and proper driver compliance, limiting its use for full MongoDB deployments.
Installation requires managing multiple dependencies manually via ASDF, as noted in the README, though Quicklisp alleviates this partially.
Multi-threading support demands custom compilation on some platforms, such as SBCL on macOS, adding setup overhead and potential compatibility issues.