Excluding pages from search

I’m fairly new to logseq and I’m trying to build up some MOC-pages with queries for stuff I need. A huge thing for me is to list todo’s based on pages I have a link to [[personal]] on, this works create.
But I also want to list todos on pages that are not labeled [[personal]], but that doesn’t work.

A simple example to demonstrate my problem:

- testblocks
	- [[testtag1]] [[testtag]]
		- TODO test 1 here

	- [[testag2]] [[testtag]]
		- TODO test 2 here

- queries
	- {{query (and [[testtag]] (task todo now later done))}}
	- {{query (and [[testtag]] (task todo now later done) (not [[testtag2]]))}}

I want query 1 to return both items, and query 2 to only return testtag1.
Both queries returns both blocks. Am I using the not wrong? Do I need advanced queries to do this?

 :query [:find (pull ?b [*])
         :in $ ?current
         [?p :block/name ?current]
         [?b :block/page ?p]
         (task ?b #{"TODO" "NOW" "LATER" "DONE"})
         [?ref1 :block/name "testtag"]
         [?ref2 :block/name "testtag1"]
         [?b :block/path-refs ?ref1]
         [?b :block/path-refs ?ref2]
 :inputs [:current-page]