I think you should require the item names to be symbols, saying "It is an error if
items is not a list of symbols."
I'm not sure what happens if one of the pattern bindings of nstore-from or nstore-where is missing one or more of the database items? Is that a wild card? Or is it just an error?
If it is an error, then you can dispense with var objectsand switch to a system where any item names left out of a pattern binding indicate they are being queried on. So given the item names a, b, c, d, e, f and a pattern binding containing values of a, c, f, the result binding will bind b, d, e to the values found in the database.
If you do want wildcard support, you can have a unique object nstore-wildcard, perhaps (define nstore-wildcard (string-copy "*")), and any item name bound to a wildcard can have any value; it is not returned in the result binding.